0

私は、ユーザーがアナウンスシステムにメッセージを追加できるシンプルなUIに取り組んでいます。

addMessage.jspに詳細を入力し、reviewMessage.jspで結果を確認してから、reviewMessage.jspから送信します。ここで、情報はストアドプロシージャを介してデータベースに送信されます。

ユーザーがレビューページから送信に到達するまで、すべてが正常に機能します。実行がJSPを離れ、Actionクラスに再び入ると、メッセージBeanはnullになります。同じアクションで複数のメソッドとページを介してBeanを永続化するにはどうすればよいですか?

これが私のstruts.xmlファイルのスニペットです:

<!--Render message entry page-->
<action name="activateMessageInitial"
    class="org.mycompany.struts.action.ActivateMessageAction" method="execute">
    <result name="success">/addMessage.jsp</result>
</action>

<!--Receive message bean fields, adjust their results for storage, render review page-->        
<action name="segmentMessage"
    class="org.mycompany.struts.action.ActivateMessageAction" method="parseAndSegment">
    <result name="failed">/addMessage.jsp</result>
    <result name="success">/reviewMessage.jsp</result>
</action>

<!--Review complete, break message bean into fields to submit to database, then return to main menu-->      
<action name="submitMessage"
    class="org.mycompany.struts.action.ActivateMessageAction" method="activate">            
    <result name="success" type="redirectAction">main</result>
</action>   

そして、難読化されたActivateMessageActionクラス:

private TargetedMessage messageBean;

public String execute() throws Exception 
{           
    //empty method  
}

//Take the provider message bean, adjust any values as necessary, and then add in the segmentation detail.
public String parseAndSegment() throws Exception    
{       
    //adjust bean fields
}

//Take a completed provider message bean and send it to the database for processing.
public String activate()
{

    //send bean to database; null, here, hence the error.
    ActivateMessageModel.createMessage(messageBean);    
}

public void setMessageBean(TargetedMessage messageBean)
{
    this.messageBean = messageBean;
}

public TargetedMessage getMessageBean()
{
    return messageBean;
}
4

1 に答える 1

2

アクションのライフサイクルは、単一のHTTPリクエストに制限されています。データを非表示のフォームフィールドとして渡すか、オブジェクトをセッションに保存することができます。

于 2012-07-08T04:12:41.423 に答える