<!-- 指定由spring负责action对象的创建 -->
<constant name="struts.objectFactory" value="spring" />
这里的value,就是:
<pre name="code" class="html"><bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
ObjectFactory,是xwork中很重要的一个类,是产生action的地方。单独使用xwork的时候,action都是这个类创建的。
而Struts2拥有三个对象工厂: (1) org.apache.struts2.spring.StrutsSpringObjectFactory(struts2的spring插件提供);
(2) org.apache.struts2.impl.StrutsObjectFactory(struts2自带);
(3) com.opensymphony.xwork2.ObjectFactory(xwork自带),且前两者都继承于后者。
<!-- 所有匹配*.action的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action" />
web.xml里面的过滤器配置只支持以下三种 :
① 完全匹配 <url-pattern>/test/zhidao.action</url-pattern>
② 目录匹配 <url-pattern>/test/*</url-pattern>
③ 扩展名匹配 <url-pattern>*.action</url-pattern>
<!-- 是否启用开发模式 -->
<constant name="struts.devMode" value="true" />
devMode有以下两种模式:
①开发模式(devMode);此时 DevMode=ture;
②产品模式(proMode);此时 DevMode=false;
<!-- struts配置文件改动后,是否重新加载,默认值为false,开发阶段最好true-->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容,默认值为true,开发阶段最好false -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 请求参数的编码方式,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
<constant name="struts.i18n.reload" value="true" />
struts.i18n.reload该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
备注:
Struts.xml相关配置如下:
<action name="upload" class="action.UploadAction">
<result name="success">/success.jsp</result>
<result name="input">/upload.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">5000000</param>
</interceptor-ref>
</action>
解决方法:
在struts.xml中加入 <constant name="struts.multipart.maxSize" value="10000000"/>,大约10M
原因:maximumSize须小于 struts.multipart.maxSize,而默认值不足5M,所以修改maximumSize无效,
应先修改 struts.multipart.maxSize
----------------------------------------------
即,
若 上传文件大小<maximumSize ,上传成功
若 maximumSize<上传文件大小< struts.multipart.maxSize , 若 上传文件大小 > struts.multipart.maxSize ,
Struts has detected an unhandled exception:
Messages: | No result defined for action action.UploadAction and result input |
<!-- 让struts2支持动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
作用:动态调用action方法,action!method
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value="true" />
指定在struts2的标签中是否使用"%{}"的语法来计算标签的字符串属性中的表达式。可选的值为true和false,默认值为true。
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />
对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。
<constant name="struts.multipart.saveDir" value="/tmp"></constant>
指定文件上传的临时目录。默认使用javax.servlet.context.tempdir。
详情