2011-01-26 7 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); 
    } 

リクエスト属性値にアクセスしたいと思います。

<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'をevaulateしません。

はHTML生成:

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

もしそうなら、この<s:property value="%{#attr['A']}"/>、私は正しい値を取得するようにハードコード記号...

どれ手がかりは?お願いします。私はそれを得たちょっとしたトリックで

+1

私は密接にこれを見て、ただの旅行の人々をこれらの事を注意しませんでした:1)「」の文字列が、OGNLの文字ではありませんOGNLが一重引用符で複数の文字を取得した場合、文字列を生成しますが、一文字は "文字"を使用する必要があります2)リクエストパラメータはMap 型ではなくMap )ストラットs:iteratorタグはIterableで動作するので、#requestマップで直接動作することができます。これはアクションコードを削除できるはずです(ビューよりもアクションにコードを置く方が良いと思いますがこの場合はまだ反復する必要があります)。 – Quaternion

+0

#1。ありがとうございます#2で私たちはケアですul(私は十分に願っています:))。 #3の場合は可能ですが、ここでは特定の値オブジェクトを繰り返し実行していますが、リクエストマップでも繰り返し実行すればO(n^2)になります。 – Trick

答えて

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> 
関連する問題