-1

アクション クラスの 1 つに次のfromDateフィールドがあります。その値は適切なjspファイルから来ています。また、ServletContextAware インターフェイスを使用して、contex.setAttribute を使用して fromDate 値を次のように設定します。1)シナリオ-1

public class Search extends ActionSupport implements ServletContextAware {
    private String fromDate;
    public String getFromDate() {
        return fromDate;
    }
    public void setFromDate(String fromDate) {
        this.fromDate = fromDate;
    }
}

@Override
public void setServletContext(ServletContext ctx) {
    ctx.setAttribute("startDate", getFromDate());   
}

現在、execute メソッド内の他のアクション クラスで、次のように値を取得しています。

public String execute() {
    ServletContext context = ServletActionContext.getServletContext();
    String obj = (String)context.getAttribute("startDate");

obj 値が null を示しています。

次のように最初のアクションクラスでコンテキスト変数を設定しながら

2)Scenario-2
    public class Search extends ActionSupport implements ServletContextAware {
        private String fromDate;
        public String getFromDate() {
            return fromDate;
        }
        public void setFromDate(String fromDate) {
            this.fromDate = fromDate;
        }

    @Override
    public void setServletContext(ServletContext ctx) {
        ctx.setAttribute("startDate", "Test message");  
    }
}

現在、execute メソッド内の他のアクション クラスで、次のように値を取得しています。

public String execute() {
    ServletContext context = ServletActionContext.getServletContext();
    String obj = (String)context.getAttribute("startDate");

obj 値は適切な「テスト メッセージ」を示しています

最初のシナリオで述べたように、動的な「private String fromDate」を ctx.setAttribute 内に渡す必要があります。これは jsp から来ています。

私の要件は、最初のアクション クラスで変数 (fromDate) を設定できることです。そして、他のアクションクラスでは、その変数を使用する必要があります。私を助けてください。前もって感謝します。

4

1 に答える 1

1

デイブがすでに述べたように、あなたは間違った順序でそれをやっています。コンテキストで属性を設定した時間、 fromDate はその後に設定されるため null です。

setServletContext(...) で属性を設定する代わりに、アクションの execute メソッドで属性を設定してみませんか!

public String execute(){
    ServletActionContext.getServletContext().setAttribute("startDate", getFromDate());
}

そして、2番目のアクションでそれを使用できます。

于 2013-10-29T02:35:08.300 に答える