Передача нескольких параметров через тег <s: url /> Struts2 - PullRequest
7 голосов
/ 29 января 2012

Этот код должен отправлять два параметра в действие 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, а второй является нулевым! Я изменил место двух параметров, и снова только первый был в порядке.

Можно ли передать более одного параметра через тег s: url?

UPDATE

Вот как отображается тег 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 Ответ

16 голосов
/ 31 января 2012

Вы можете отключить экранирование URL, используя атрибут escapeAmp="false".По умолчанию это включено, поэтому параметр URL & будет отображать &amp;.Это вызовет проблему при чтении значения параметра с именем параметра.

  1. Вам может потребоваться прочитать параметр, request.getParameter("amp;pageNumber_hidden")
  2. Вы перестали экранировать сущности, добавив атрибут escapeAmp и установив значение false как часть <s:url>тег (рекомендуется)

<s:url id="loadReportsForAPageInitial"
       value="/loadReportsForAPage.action" 
       escapeAmp="false">
...