知识大全 struts2 更改默认resulttype

Posted 表达式

篇首语:勤奋就是成功之母。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 struts2 更改默认resulttype相关的知识,希望对你有一定的参考价值。

  最近碰到一个小要求 想让一些action返回的resultType默认为freemarker 开始是想在action上配置全局的result 然后name用一个表达式 然后type= freemarker

  但是经过实验 发现不行 因为这些配置是在struts 一启动的时候就已经实例化了 再在action中使用表达式起不了作用 最后会报异常

  于是去跟踪源码 最后在PackageConfig这个类中找到了相关的代码

  [java]

  public String getFullDefaultResultType()

  if ((defaultResultType == null) && !parents isEmpty())

  for (PackageConfig parent : parents)

  String parentDefault = parent getFullDefaultResultType()

  if (parentDefault != null)

  return parentDefault;

  

  

  

  return defaultResultType;

  

  这个是一个递归查询 如果本包没有配置 就会查找父包 最后会找到default package中 这个里面指定了为dispatcher

  好吧 代码是找到了 那么如何更改呢

  只需要在包中重新申明一下这个result type

  []

  <result type name= freemarker

  class= apache struts views freemarker FreemarkerResult

  default= true />

  并指定为default

  在解析这个包的时候就会将这个设置为默认的result type

  相关代码在 openfig providers XmlConfigurationProvider类的addResultTypes方法中

  [java]

  protected void addResultTypes(PackageConfig Builder packageContext Element element)

  NodeList resultTypeList = element getElementsByTagName( result type )

  for (int i = ; i < resultTypeList getLength() i++)

  Element resultTypeElement = (Element) em(i)

  String name = resultTypeElement getAttribute( name )

  String className = resultTypeElement getAttribute( class )

  String def = resultTypeElement getAttribute( default )

  Location loc = DomHelper getLocationObject(resultTypeElement)

  Class clazz = verifyResultType(className loc)

  if (clazz != null)

  String paramName = null;

  try

  paramName = (String) clazz getField( DEFAULT_PARAM ) get(null)

  

  catch (Throwable t)

  // if we get here the result type doesn t have a default param defined

  

  ResultTypeConfig Builder resultType = new ResultTypeConfig Builder(name className) defaultResultParam(paramName)

   location(DomHelper getLocationObject(resultTypeElement))

  Map<String String> params = XmlHelper getParams(resultTypeElement)

  if (!params isEmpty())

  resultType addParams(params)

  

  packageContext addResultTypeConfig(resultType build())

  // set the default result type

  if ( true equals(def))

  packageContext defaultResultType(name)

  

  

  

  

cha138/Article/program/Java/ky/201311/28223

相关参考

知识大全 怎么更改软件的默认安装位置。例如我要安装vs2015,再更改了安装路径后,安装完发现c盘里多了十几

怎么更改软件的默认安装位置。例如我要安装vs2015,再更改了安装路径后,安装完发现c盘里多了十几有些文件是必须默认安装在C盘的,否则无法运行。win7安装vs2015怎么改变安装路径检查你的.fra

知识大全 struts2中的一些constant

  struts中一些常量  <!指定Web应用的默认编码集相当于调用HttpServletRequest的setCharacterEncoding方法>  <constantnam

知识大全 struts2 中的日期格式化输出

  struts中的默认的日期输出并不符合我们的中文日常习惯以下是我知道的在struts中进行日期格式化输出的几种方式  利用<s:date>进行格式化如  <s:dateforma

知识大全 win10应用商店里安装的软件是安装在哪里呢 能更改安装位置吗

win10应用商店里安装的软件是安装在哪里呢能更改安装位置吗?怎么改?win10或win8系统在应用商店下载安装软件的时候默认是安装在C盘-programFiles-隐藏文件夹WindowsApps,

知识大全 淘宝买家给卖家中差评后。我要怎么给买家中差评呢

淘宝买家给卖家中差评后。我要怎么给买家中差评呢?还有系统好像是默认好评的,我要如何更改呢?急求如果你给买家的评价因时间太久没有评价,导致系统默认自动好评的话,你就没办法再修改了如果你还没有给买家评价,

知识大全 怎样设置手机软件安装位置

怎样设置手机软件安装位置我目前的手机属于低端的,ROM只有4G,除了系统的应用,再加上自己装的应用,很快就满了。相信大家也有遇到这种情况吧。2因为在安装软件的时候默认安装在手机上的,没法更改。下面与大

知识大全 学习比较Struts2和Struts1:Struts2完胜

学习比较Struts2和Struts1:Struts2完胜  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 asp中设置session过期时间方法总结

  如果程序中没有设置session的过期时间那么session过期时间就会按照IIS设置的过期时间来执行IIS中session默认过期时间为分钟IIS中session时间可以更改   如果

知识大全 配置归档日志,让数据库管理更加顺畅

  一更改日志操作模式三步走  默认情况下Oracle数据库采用的是非归档模式但是非归档模式不能够防止因物理损坏而导致丢失数据问题为此数据库管理员可能需要把日志操作模式从非归档模式转换为归档模式其实要

知识大全 Struts2简介

Struts2简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是Struts?  虽然