1

2 つの異なるアクションからの 2 つのリストを表示する 2 つの JSP ページがあります。ページAには従業員リストが表示され、ページBには部門リストが表示されます。

両方のページの上部には、名前で従業員を検索するための共通のテキスト フィールド (3 番目の JSP ページから含まれています) があります。

<s:form action="searchEmployeesByName">
    <s:textfield name="employeeName" />
    <s:submit>
</s:form>

検索アクションはクラスの一部であり、問​​題なくEmployeeActionページを読み込んAで検索を実行できます。

ただし、 page をロードするときに、プロパティがof にないためBに発生しました。ognl.NoSuchPropertyExceptionemployeeNameValueStackDepartmentAction

どうすればこの問題を解決できますか? からアクセスする方法はありますemployeeNameか? または、一般的な検索機能を実行するには、アクションをどのように再編成する必要がありますか?EmployeeActionDepartmentAction

これが私のアクション構成ファイルです:

<struts>   
    <package name="employee" namespace="/employee" extends="tiles-default">    
        <action name="getEmployeeList" class="my.package.EmployeeAction"
            method="getEmployeeList">
            <result name="success">/employee_list.tiles</result>
        </action>    
        <action name="searchEmployeesByName" class="my.package.EmployeeAction"
            method="searchEmployeesByName">
            <result name="success">/search_results.tiles</result>
        </action>    
    </package>      
    <package name="department" namespace="/department" extends="tiles-default">   
        <action name="getDepartmentList" class="my.package.DepartmentAction"
            method="getDepartmentList">
            <result name="success">/department_list.tiles</result>
        </action>    
    </package>    
</struts>
4

3 に答える 3

1

アクションは要求に応じて作成され、スレッドに対してローカルであるため、コンテキストを共有しません。アクションによって設定されたプロパティが必要な場合は、URL でパラメーターを指定するか、セッションから取得する必要があります。

渡すプロパティのゲッターとセッターを作成する必要があります。通常、param他のタグをパラメーター化するために使用できるタグでパラメーターを渡します。

あなたの場合param、結果構成でタグを使用して動的パラメーターを作成できます

<result name="searchEmployeesByName" type="redirectAction">
  <param name="actionName">department</param>
  <param name="employeeName">${employeeName}</param>
</result>

詳細については、動的結果の構成を参照してください。

于 2013-06-20T11:09:32.700 に答える
0

回答ありがとうございます。struts.propertiesの次の行にコメントを付けることで、これを解決しました。

struts.ognl.logMissingProperties=true

struts.el.throwExceptionOnFailure=true

Struts が以前に employeeName を検索しようとした理由はまだわかりませんが。

于 2013-06-20T15:55:40.627 に答える