2017-03-31 3 views
1

は、私はクラスを持っているMessage.javaStruts 2:s:プロパティ。名前がパラメータとしてJSPに渡される変数の値を取得する方法は?

public class Message{ 

    private Location origin; 
    private Location destination; 

//Getters and setters correctly defined 
} 

Location.java

public class Location{ 

private String address;  
} 

MessageAction.java origindestination

と呼ばれる同じタイプLocation.javaの二つの変数を持つMessage.java

public class MessageAction { 

     private Message message; 
     //Getters and setters correctly defined 
    } 

私はコードを再利用したいので、共通のJSPを作成して、これらの変数の名前をパラメータで渡しました。 (もちろん、コードはこれが唯一の基本的な例である、より複雑なので、それは本当に私は、コードを再利用することができます)

message.jspここ

<s:push value="message"> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'origin'" /> 
    </s:include> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'destination'" /> 
    </s:include> 
</push> 

私は、問題が来ます%{variableName}.addressの値を表示する方法がわかりません。私はいくつかの組み合わせを試み、しばらくグーグルが私は何も見つかりませんでした。私は直接変数の名前を書いた場合

<s:set name="variableName">${param.variableName}</s:set> 
<s:property value="%{%{variableName}.address}" /> 

location.jspは、私が正しくその価値を受け取り、そのアクションは、それらを正しく設定しています。

<s:property value="origin.address" /> 
<s:property value="destination.address" /> 
+0

http://stackoverflow.com/q/16712395/1700321を参照してください。 –

答えて

0

これはtempleteとしてJSPを再利用する場合、あなたは有効なOGNL式を使用する必要があるだけで、間違ったOGNL式

%{%{variableName}.address} 

です。それでも、このパラメータ名の値を返すために複雑なOGNLを持つので、パラメータ名を渡すことは非常に大変です。

また

パラメータがリクエストパラメータとして渡されていることを知っているので、それらにアクセスする${param.ParamName}表記を使用する必要があります。インクルードファイルのパラメータには、propertyタグを使用しないでください。

関連する問題