1

30の異なるフィールドを持つフォームがあります。それらすべてをコントローラーに渡すには、ゲッター、セッターのペアとともにそれぞれの属性が必要です。

フォームフィールドをオブジェクトとして作成し、そのオブジェクトをコントローラーに送信します。

私は次のコードを使用しています*が、jspからjavaメソッドを呼び出し、代わりにJSTLを使用することは悪い習慣であると示唆する人もいますが、JSTLを使用して実装する方法がわかりません。それを行う他の方法はありますか?*

私のJSP

 <s:form>
 code to implement form goes here
 </s:form> 

<jsp:useBean id="obj" class="com.User"/>

    <jsp:setProperty property="*" name="obj"/>

      <%
         String myoutput = myController.Xclass(obj);
         out.print(myoutput);
         if(myController.Xclass(obj).equals("output"))
            {
               out.print("The form is successfully submitted.");
            }
      %>

コントローラー

  public String Xclass(User obj){
           return "output";
        }

私のクラス図を明確にするために、次のとおりです。

User Class {
 all the attributes and getters setters
}

myController class extends User {

    public String XClass(User obj){
       ... work on the inputes ...
      return "output";
    }
}
4

1 に答える 1

1

アクションプロパティの数が問題になる場合は、POJOを手動で公開するか、ModelDrivenを使用してください。

手動で行うのは簡単です。次に例を示します。

public class UserController {
    private User user; // Plus public getter and setter
}

User次に、JSPでプロパティを名前で参照できます。

<s:form ...>
  <s:textfield key="user.firstName"/>
  ...

ModelDriven自動的にスタックに置かれるため、理論的にはさらに簡単に使用できます。新しいモデルが必要な場合にのみインスタンス化されるようにするのは難しい場合がありますが、基本的には(メモリから)次のようになります。

public class UserController implements ModelDriven<User> {
    private User user;
    public User getModel() { return user; }
}

はスタックにプッシュされるUserため、JSPでプロパティを直接使用します。User

<s:form ...>
  <s:textfield key="firstName"/>
  ...

同様に、フォームの送信時に、モデルが作成され、メソッドの最初のターゲットとして使用されます。

オブジェクトをJava側に送信することは決してないことを忘れないでください。常に、唯一、文字列を送信します(通常のHTTPフォーム送信から)。これらの文字列をオブジェクトに変換する魔法がサーバー側にあるかもしれませんが、それはまさに魔法です。魔法と希望。

于 2013-02-13T00:22:18.030 に答える