私はストラット初心者です。私は 、Form
、Action
を持っていjsp view
ます。
<form-beans>
<form-bean name="bookEventForm" type="com.example.BookEventForm" />
</form-beans>
<action path="/bookEvent"
type="com.example.BookEventAction"
name="bookEventForm"
input="/WEB-INF/jsp/bookEvent.jsp"
scope="request">
<forward name="success" path="/WEB-INF/jsp/bookEvent.jsp" />
</action>
イベント フォームのプロパティの 1 つCountry
なので、最初に行うことAction
は次のとおりです。
request.setAttribute("countries", countriesDao.getAll());
ビューで、次を使用して選択要素をレンダリングします。
<html:select property="..." >
<html:optionsCollection name="countries" ... />
</html:select>
これは、 ActionForm#validateを追加していくつかの検証チェックを行うまでは正常に機能します (たとえば、姓 != null など、国とは関係ありません)。
struts 仕様では、エラーが発生するとすぐにAction#execute
実行されません。したがって、countries
コレクションはリクエストに含まれなくなり、ビューは空の select 要素でレンダリングされます。
ストラットの核となる概念が欠けている可能性が高いことはわかっています。ビューで dao を使用できるようにすることを友人が提案したので、いつでも国をフェッチできますが、私は通常、JSP「コード」が実行される前にビューを準備する (db データをプリフェッチする) ことを好みます。
何か案は?