2012-01-29 8 views
7

Ten kod należy wysłać dwa parametry do akcji struts:Przekazywanie wielu parametrów za pomocą tagu <s:url/> Struts2

<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> 

problem jest tylko wartość pierwszego parametru jest wysyłany do działania rozporki, a drugi jest zerowy! Zmieniłem miejsce dwóch parametrów i znowu tylko pierwsza była w porządku.

Czy można przekazać więcej niż jeden parametr poprzez znacznik s: url?

UPDATE

to jak tag url jest renderowany:

<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

Jak działa adres URL? Zwróć też uwagę, że użycie "id" dla pliku URL jest przestarzałe. –

+0

@DaveNewton: Dodałem tam wynik renderowania, czy problem ma coś wspólnego z "& amp" na końcu pierwszego parametru? –

+1

Właściwie to zadajesz niewłaściwe pytanie - tak, możesz przekazać więcej niż jeden parametr przez tag '', ale prawdziwe pytanie dotyczy tagu '' i sposobu, w jaki obsługuje on parametry - wygląda na to, że go unika. . Myślę, że masz rację, że to jest problem. –

Odpowiedz

16

Możesz wyłączyć zachowanie ucieczki URL przy użyciu atrybutu escapeAmp="false". Domyślnie jest to włączone, więc parametr URL & wyświetli &amp;. Spowoduje to problem z odczytaniem wartości parametru z nazwą parametru.

  1. może trzeba odczytać parametr, request.getParameter("amp;pageNumber_hidden")
  2. pan zatrzymać ucieczkę podmioty dodając atrybut escapeAmp i ustawić wartość false jako część znacznika <s:url> (zalecane)

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

to wszystko! dzięki –