我正在使用<s:url>
创建一个类似removeAction.action?id=10
的URL,它应该由<s:form>
元素中的action属性使用。
这里的问题是,当<s:form>
转换为<form>
元素时,我只能看到action属性值为action="/project/removeAction.action"
。id参数被修剪。我想要的结果是action="/project/removeAction.action?id=10"
<s:url var="actionUrl" action="removeAction" includeContext="false">
<s:param name="id" value="%{id}" />
</s:url>
<s:form action="%{actionUrl}" method="post" enctype="multipart/form-data" >
<div>
<s:file name="imgUpload"/>
<s:submit> upload </submit>
</div>
</s:form>
最近我把struts2核心版本升级到2.3.12,我遇到了这个问题。这个问题开始于www.example.com版本之后2.3.4.1
我不想使用hidden
属性来传递参数,因为当上传的文件太大时,此参数会丢失。
对此有什么解决办法吗?
3条答案
按热度按时间flvlnr441#
如果文件太大,上传文件时隐藏参数会丢失,这意味着什么?它将被重新读取并自动填充...
RemoveAction
一个实际上是UPLOADING**一个文件的操作。调用它UploadAction
,为了逻辑:|max multipart size exceeded
错误,请将以下代码放入Struts.xml
:fileUpload Interceptor
中单个文件的最大大小(默认为2Mb),请将以下内容放在Struts.xml
中,放在您的Stack definition
中:(with在本示例中,您最多可以连续上传5个10 MB的文件)
HTML5
的浏览器(几乎所有浏览器,除了旧版IE和一些移动的),您可以通过在onchange
事件中检查其大小来防止上传BEFORE IT IS SENT,如下所示:z18hc3ub2#
您可以使用通配符Map
并将id作为url本身的一部分传递。例如:删除操作/101
参考http://struts.apache.org/release/2.3.x/docs/wildcard-mappings.html
px9o7tmv3#
发生该问题的原因是,org.apache.struts2.components.ServletUrlRenderer.renderUrl()方法找不到动作“removeAction”的动作配置,因为URL(#actionUrl)已包含“.action”后缀。
从struts2 s:form documentation上取动作参数:
设置要提交到的操作名称,不带.action后缀
解决办法很简单:请勿使用
<s:url>
,而应: