Передача нескольких параметров через тег ‹s:url/› Struts2

Этот код должен отправить два параметра действию 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);

});  

person SJ.Jafari    schedule 29.01.2012    source источник
comment
Как отображается URL? Также обратите внимание, что использование id для URL var устарело.   -  person Dave Newton    schedule 29.01.2012
comment
@DaveNewton: я добавил туда результат рендеринга, проблема связана с & в конце первого параметра?   -  person SJ.Jafari    schedule 29.01.2012
comment
На самом деле вы задаете неправильный вопрос - да, вы можете передать более одного параметра через тег <s:url>, но реальный вопрос касается тега <sj:div> и того, как он обрабатывает параметры - похоже, что он ускользает от него. Я думаю, вы правы, что это проблема.   -  person Dave Newton    schedule 29.01.2012
comment
Так что, похоже, это ошибка плагина Struts2jQuery, интересно!   -  person SJ.Jafari    schedule 29.01.2012
comment
Не знаю, ошибка это или предполагаемое поведение; Я бы сначала проверил источник, чтобы увидеть, как он заполняет hrefparameter. В то же время это можно обойти различными способами, выполняя минимальный анализ/разделение одного параметра, если источник не дает подсказок.   -  person Dave Newton    schedule 29.01.2012
comment
ну, да, я передал один параметр с разделителями-запятыми, чтобы продолжить работу. Я думаю, что лучше проконсультироваться с разработчиками плагина.   -  person SJ.Jafari    schedule 29.01.2012


Ответы (1)


Вы можете отключить экранирование 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">
person Sriharan    schedule 31.01.2012