通过<s:url> Struts2标记</s:url>传递多个参数

时间:2012-01-29 16:15:39

标签: java ajax struts2 parameter-passing

此代码应向struts操作发送两个参数:

<s:url id="loadReportsForAPageInitial" value="/loadReportsForAPage.action" >
    <s:param name="reportsCount_hidden" value="3"></s:param>
    <s:param name="pageNumber_hidden" value="1"></s:param>
</s:url>
<sj:div href="%{loadReportsForAPageInitial}">
</sj:div>

问题是只有第一个参数的值被发送到struts动作而第二个参数是null!我改变了两个参数的位置,而且只有第一个参数很好。

是否可以通过s:url标记传递多个参数?

更新

这是url标记的呈现方式:

<script type='text/javascript'>
jQuery(document).ready(function () { 
    var options_div_1179027906 = {};
    options_div_1179027906.jqueryaction = "container";
    options_div_1179027906.id = "div_1179027906";
    options_div_1179027906.href = "/FAP/loadReportsForAPage.action";
    options_div_1179027906.hrefparameter = "reportsCount_hidden=3&amp;pageNumber_hidden=1";
    jQuery.struts2_jquery.bind(jQuery('#div_1179027906'),options_div_1179027906);

});  

1 个答案:

答案 0 :(得分:16)

您可以使用escapeAmp="false"属性禁用网址转义行为。默认情况下,此功能已启用,因此网址参数&将呈现&amp;。这将导致使用参数名称读取参数值时出现问题。

  1. 您可能需要阅读参数, request.getParameter("amp;pageNumber_hidden")
  2. 您已通过添加属性escapeAmp停止转义实体 并将值false设置为<s:url>标记(推荐)
  3. 的一部分
    <s:url id="loadReportsForAPageInitial"
           value="/loadReportsForAPage.action" 
           escapeAmp="false">