私はJSPでフォームを持っています。送信ボタンには「検索」と「新規追加」の2つのボタンがあります。 StrutsのActionクラスでstruts.xml
1つのアクションクラスで複数の送信ボタンのシナリオでクリックされた送信ボタンを検出するにはどうすればよいですか?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
</package>
<package name="example" namespace="/example" extends="default">
<action name="employeeAction" class="example.EmployeeAction">
<result name="search">/example/search.jsp</result>
<result name="add" type="redirect">/example/add.jsp</result>
</action>
</package>
</struts>
で
<s:form name="searchForm" action="employeeAction" method="post">
<s:textfield name="id" label="Employee ID"/>
<s:textfield name="name" label="Employee Name"/>
<s:submit value="Search"/>
<s:submit value="Add New"/>
</s:form>
、我々はhttpリクエストを処理し、それが方法である唯一の方法があることを知っています。私の予想場合
私は検索ボタンをクリックしたときに、それはデータ検索を実行し、/example/search.jsp
にデータをレンダリングします、私は新しい追加]ボタンをクリックしたとき、それは/example/add.jsp
にリダイレクトページを実行します。ただし、両方のボタンをクリックすると、execute()メソッドに入ります。ですから、メソッドでクリックされたボタンを検出する方法を知る必要があります。
シナリオはあなたがstruts.xml
ファイルに2つのアクションを定義し、異なるアクションhttp://struts.apache.org/docs/submit.htmlに提出するために、<s:submit>
タグのaction
属性を使用することができ、この
public class EmployeeAction extends ActionSupport {
public String execute() throws Exception {
//PSEUDOCODE
//IF (submitButton is searchButton)
// return doSearch();
//ELSE IF (submitButton is addNewButton)
// return doAddNew();
return SUCCESS;
}
public String doSearch() throws Exception {
//perform search logic here
return "search";
}
public String doAddNew() throws Exception {
return "add";
}
}
http://struts.apache.org/2.x/docs/multiple-submit-buttons.htmlを参照してください。 –
はい....それを得ました... –
@アレクサンドルM:もっと詳細な回答はできますか? struts.xmlのように見えます。複数の送信ボタンの記事については、私は実際にそれを読んでいた:)。最初の1つは有望ですが、何とかうまくいきませんでした。ボタンの文字列ラベルをstrutsコントローラでブール値に変換できないようです。おそらく古いバージョンで動作するために使用されていました(私はstruts 2.3を使用しています) 。 2番目のボタンは、ボタンラベルとの緊密な結合のために、良くありません。 –
null