対応するActionForm
Bean 間でデータが渡されることを期待して、1つのアクションから別のアクションにリダイレクトしようとしています。最初のアクションは、ブラウザからリクエストを受け取り、データフィールドを出力して、同じフィールドを出力してJSPにリダイレクトする別のアクションに転送します。
問題はActionTo
、間違った値を出力することです。期待どおりcommonInt
に0
、デフォルト値はです35
。
以下に代表的な例を示します。
public class ActionFrom extends DispatchableAction{
public ActionForward send(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormA formA = (FormA)form;
formA.commonInt = 35;
System.out.println("sent: "+formA.commonInt);
return mapping.findForward("send");
}
}
public class ActionTo extends DispatchableAction{
public ActionForward recv(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormB formB = (FormB)form;
System.out.println("recv= "+formB.commonInt);
return mapping.findForward("send");
}
}
そしてactionFormsは:
public class FormA extends ActionForm {
public int intA;
public int commonInt;
}
public class FormB extends ActionForm{
public int intB;
public int commonInt;
}
マッピング:
<action path="/from" type="EXPERIMENT.ActionFrom" name="formA" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/to.do?dispatch=recv" redirect="false"/>
</action>
<action path="/to" type="EXPERIMENT.ActionTo" name="formB" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/login.do" redirect="false"/>
</action>
これを達成する方法はありますか?または、両方の形式が同じである必要がありますか?
私たちが試みた回避策は、リクエストを通して物事を渡すことでしたが、それは大きくて厄介なものになる可能性があります。
これを行う方法は、両方のアクションに同じアクションフォームを使用することです。2つの異なるアクションフォームが必要な特定の理由はありますか?そうでない場合は、2番目のアクションマッピングをname = "formA"に変更し、アクション自体をFormBではなくFormAを使用するように変更してみてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加