Struts2を使用しています
アクションと結果の入力に結果が定義されていないため、エラーが発生します
<action name="update" method="updatePhase" class="Project">
<result name="updated">/Project.jsp</result>
</action>
アクションがmy Javaクラスに渡されません。
誰か助けてもらえますか?
エラーメッセージは、input
という名前の結果がアクションに対して定義されていないことを意味します。結果input
は、アクションに渡されたパラメーターの検証に問題がある場合にStrutsによって返されるデフォルトの結果です。したがって、チェックして、HTMLフォームから渡すパラメーターがアクションのパラメーターと一致することを確認することをお勧めします。スペル、データ型などを確認してください.
同じエラーが発生し、struts.xmlファイルを変更しました
from
<action name="Registeration101" class="Registeration101">
<result name="success">pages/inputform.jsp</result>
<result name="done">pages/quoteSuccess.jsp</result>
</action>
to
<action name="Registeration101" class="Registeration101">
<result name="success">pages/inputform.jsp</result>
<result name="input">pages/inputform.jsp</result>
<result name="done">pages/quoteSuccess.jsp</result>
</action>
基本的に結果name = "input"は定義されていません
X.jspから来ているとします。
Beanクラスに検証アノテーションを配置すると、アクションで使用してx.jspを提供しない場合があり、例外がスローされます。
入力を検証したくない場合は、Beanクラスから検証アノテーションを削除するだけです。
簡単な答え-間違った入力をすると起こります。たとえば、char型の「firstName」という名前のフィールドがあり、誤った入力(、intなど)を指定した場合
最も一般的なケースは、コンベンションプラグインの存在です。 「規約」が含まれているものを探し、それを削除します。より詳細な説明はすぐに続きます。
1つの解決策は、アクションに「input」という名前の結果を指定することです。これは、注釈を介して問題を解決した方法です。
前:
@Action(value = "sendFeedback", results = {
@Result(name = SUCCESS,type = "json"),
@Result(name = ERROR,type = "json")})
後:
@Action(value = "sendFeedback", results = {
@Result(name = SUCCESS,type = "json"),
@Result(name = INPUT, type = "json"),
@Result(name = ERROR,type = "json")})
<action name="update" method="updatePhase" class="Project">
<result name="updated">/Project.jsp</result>
<result name="input">/Project.jsp</result> <!-- add input return type as well in your struts.xml -->
</action>
一般に、すべてがうまくいった場合、コントローラのexecute()/ updatePhase()は更新を返します。しかし、Strutsが処理する他の戻り値の型があります。
戻り値を無視して対応することにより、手動で処理できます
<result name="yourReturnValue">/Project.jsp</result>
対応するタグ内。
それが今明らかであることを願っています。
クラスファイル(ケースではclass = "project")のvalidateメソッドをオーバーライドした場合、validateメソッドで使用する必要な入力値が必要になります。必要な値を渡すか、validateメソッドで一部の検証を変更できます。