2011-01-26 47 views
0

在操作中,我重新設置發送的參數。如何訪問JSP中的動態屬性(Struts2)

for(Enumeration<String> enumParams = request.getParameterNames(); enumParams.hasMoreElements();) { 
     String name = enumParams.nextElement(); 
     String value = request.getParameter(name); 
     request.setAttribute(name, value); 
    } 

在JSP上,我想訪問request屬性值。

<s:iterator value="variables"> 
    <input type="text" 
     id="<s:property value="sign"/>" 
     name="<s:property value="sign"/>" 
     value="<s:property value="%{#attr['sign']}"/>" /> 
</s:iterator> 

(變量與區域符號等對象)

目前我得到<s:property value="%{#attr['sign']}"/>只有變量的符號,而不是價值。它不會遺漏'sign'

生成的HTML:

<input id="A" name="A" value="A" type="text"> 

所以,如果硬編碼符號這樣<s:property value="%{#attr['A']}"/>,我得到正確的值...

任何線索?請。

+1

我沒有在這仔細一看,但只要注意這些事情,行程達人:1)「A」不是一個字符串,但在OGNL字符,如果OGNL在單引號中獲得多個字符,它將產生一個字符串,但單個字符必須使用「字符」。2)請求參數不是Map 類型,而是Map 3 )struts s:iterator標籤可以處理任何Iterable,所以它可以直接與#request地圖一起工作,這應該能夠刪除動作代碼(我認爲在動作中使用代碼比在視圖中更好,但是在這種情況下,你仍然需要迭代) – Quaternion 2011-01-26 19:02:28

回答

3

有了一個小竅門,我知道了:

<s:iterator value="variables"> 
    <s:set var="mySign" value="%{sign}" name="mySign" scope="request"></s:set> 
    <jsp:useBean id="mySign" class="java.lang.String" scope="request" ></jsp:useBean>   
    <input type="text" 
     id="<s:property value="sign"/>" 
     name="<s:property value="sign"/>" 
     value="<%=request.getAttribute(mySign)%>"> 
</s:iterator>