2

JSP からアクション クラスにオブジェクトを渡したい。どうやってするの?私はそれについて何も知りません。私のサンプルコードのいくつかはここにあります:

<tr class="alt">
    <td><html:link href=""><bean:write name="EmpInfo" property="empId" /></html:link></td>
    <td><bean:write name="EmpInfo" property="empName" /></td>
    <td><bean:write name="EmpInfo" property="empAddress" /></td>
    <td><bean:write name="EmpInfo" property="empPhNumber" /></td>
    <td><bean:write name="EmpInfo" property="empEmailId" /></td>
    <td><bean:write name="EmpInfo" property="empLocName" /></td>
    <td><bean:write name="EmpInfo" property="empCountryName" /></td>
    <td><bean:write name="EmpInfo" property="empDob" /></td>
    <td><html:link href=""><bean:message key="view.single.emp.update"/></html:link></td>
</tr>

タグの上記のコードで、またはオブジェクトをアクションクラスに<html:link href="">渡したいです。これは値オブジェクトで、すべてのゲッターとセッターが含まれています。empIdEmpInfoEmpInfo

4

4 に答える 4

1

Struts の制御フローは次のようになります。

  1. HttpRequest が表示されます
  2. ActionServlet はそれを受け取り、適切な ActionForm に入力し、コントロールを Action に渡します。
  3. アクションはロジックを実行し、ActionForward に転送またはリダイレクトします

したがって、JSP に転送する場合、コントロールを別のアクションに直接渡すことはありませんが、次のアクションは、ユーザー ブラウザーからの新しい要求が送信された後に呼び出されます。

したがって、オブジェクトを渡す唯一の方法は、そのプロパティをリクエスト パラメータとして渡すことです (GET または POST を推奨)。

ちなみに、Struts 1.2+ を使用すると、ActionForm に String フィールドだけを持たなければならないということはありません。Java Beans 規則を使用して、オブジェクトをアクション形式で参照させます。

class MyActionForm extends ActionForm {
    private MyBean myBean;

    public MyBean getMyBean() {
        if (myBean == null) {
            myBean = new MyBean();
        }
        return myBean;
    }
}

これで、JSP タグでmyBean.property1を使用してそのプロパティにアクセスできるようになり、myBean.property1 という名前のリクエスト パラメータがプロパティに取り込まれます。

Struts 1.2+ は Apache Commons BeanUtils を内部で使用するため、そのコンバーターを複合型に使用できます。

于 2013-09-01T16:43:56.020 に答える
0

オブジェクトをセッションに追加するか、メソッドによってオブジェクトをリクエストしますsetAttribute()。によってアクション クラスから取得できますgetAttribute()

于 2013-09-01T14:46:14.097 に答える
0

タグを使用します。タグhtml:paramの本文で使用できますhtml:link

<html:link href=""><html:param name="empId"><bean:write name="EmpInfo" property="empId" /></html:param></html:link>
于 2013-09-01T16:08:35.730 に答える