0

私はStruts2とHibernateの初心者です。次のようなドロップダウン リストを作成したい [hibernate と struts を使用] 動的にメニューをポップアップし、id が選択されると、その id のすべての情報が表示されます。

私はこれを行うために多くのことを試みました。しかし失敗しました。誰でも私を助けてください:

次のような「学生」テーブルがあります。

id  name  age
1...a.....20
2...b.....24
3...c.....22

Hibernate を使用してモデルと dao を作成します... StudentModel と StudentDAO

DAO では、次のような ID のリストを返すメソッドを実装します。

// StudentDAO.java
public List<String> findId(String id) {
    .....
    return ...
}

ここで、次のようにアクションを struts.xml ファイルに定義します。

// Struts.xml
<action name="idSelection" class="..." method="findId">
    <result> studentpage.jsp </result>
</action>

では、studentpage.jsp を実装するにはどうすればよいでしょうか。これを行うために必要なコードまたはリファレンスを教えてください。

ありがとうございました。

4

2 に答える 2

0

これはStruts2 の動作方法ではありません。

メソッドを呼び出す場合、そのメソッドは文字列の結果のみを返す必要があります。その文字列の結果は struts.xml にマップされ、特定の結果 (この場合は JSP) を返します。

JSP から Action データにアクセスするには、読み取りたいフィールドの Getter にアクセスする必要があります。Getter と Setter を作成できる IDE はどれでもあります。Eclipse を使用している場合は、ALTSHIFTSきっとR役に立ちます。

また、OOP (オブジェクト指向プログラミング) が示唆するように、オブジェクトを使用してデータを運ぶ/送信する必要があります(それぞれの呼び出しを行うfindStudents()代わりに)。findIds()id

次に、このような Student オブジェクトを想定します

public class Student {        
    private Long id; 
    private String name;
    private Integer age;

    /* GETTERS (or ACCESSORS) */
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }

    /* SETTERS (or MUTATORS) */
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

アクションでは、もちろんゲッター/セッターを使用してそれらのプライベートリストを宣言し、呼び出されたメソッドでそれを評価する必要があります。

private List<Student> students;

public List<Student> getStudents(){
    return students;
} 
public void setStudents(List<Students> students){
    this.students = students;
} 

public String findStudents(){
     students = getMyServiceDaoOrSomething().findAllStudents();
     return "success";
}

のような設定で

<action name="students" class="..." method="findStudents">
    <result>studentpage.jsp</result>
</action>

<result>が等しいことに注意してください<result name="success">(これを Intelligent Default と呼びます) 。methodが指定されていない場合は、execute()メソッドが実行されます。

次に、JSP で結果を反復処理し、各Studentオブジェクトを一度に出力します。

<s:iterator value="students">
    <s:hidden name="id" />
    <s:textfield name="name" />
    <s:property value="age" />
</s:iterator>
于 2013-09-23T12:30:39.353 に答える
0

あなたのリストがそのような場合:List<Student>studentList、そしてStudentは

public class Student {
    private Long id;
    private String name;
    private String age;
    ...
    getter and setter...
}
request.setAttribute("studentList", studentList);

Studentpage.jsp を実装できます。

<table>
<s:iterator value="#request.studentList" status="status">
<tr>
    <td>
        <s:property value="name">
    </td>
    <td>
        <s:property value="age">
    </td>
</tr>
</s:iterator>
</table>

そのような List を返す場合: List<List<String>>、次のことができます:

<table>
<s:iterator value="#request.studentList" status="status" id="list">
<tr>
    <td>
        name:<s:property value="#list[#status.index][1]"/>
    </td>
    <td>
        age:<s:property value="#list[#status.index][2]"/>
    </td>
</tr>
</s:iterator>
</table>
于 2013-09-23T02:35:25.190 に答える