検証メッセージを設定する BalusC の好意によるこの抽象フォーム クラスがあります。
public abstract class Form {
// Properties
private Map messages = new LinkedHashMap();
private List formFeedback = new ArrayList();
private List errorMessages = new ArrayList();
private boolean hasError;
次に、フォームを拡張するクラスがたくさんあります
public class ParentForm extends Form {
public class SubForm1 extends Form {
public class SubForm2 extends Form {
public class SubForm3 extends Form {
parentForm で各サブフォームを呼び出しますが、検証メッセージをサブフォームから親に渡す方法がわかりません。
public class ParentForm extends Form {
public Object update(HttpServletRequest request) {
pseudo code
//if subform1 is being edited
SubForm1 subForm1 = new SubForm1 (authenticatedUser);
subFormBean1 sfb1 = new subFormBean1 ();
sfb1 = subForm1.update(request);
//if subform2 is being edited
SubForm2 subForm2 = new SubForm2 (authenticatedUser);
subFormBean2 sfb2 = new subFormBean2 ();
sfb2 = subForm2.update(request);
親Form
サービスは、Struts スタイルのアクションを使用してサーブレットで実行されます
クラス UpdateAction
public class UpdateAction implements ControllerAction {
private Form form;
private Object obj;
private HashMap modelMap;
public UpdateAction(HashMap modelMap, Form form, Object obj) {
this.form = form;
this.obj = obj;
this.modelMap = modelMap;
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
obj = form.update(request);
request.setAttribute("obj", obj);
request.setAttribute("form", form);
私のjspsに入れます
<span class="formError"><c:out value="${form.messages.whatever}" />
ただし、これはサブフォームからではなく、親フォームからのみメッセージを取得しています
`form[subForm].messages.whatever のようなものがうまくいくのだろうか? 何かのようなもの
if (!sfb1.notSuccess) {
parentForm.setSubFormMessages(sfb1.getMessages());
}
私のプロジェクトはかなり長いですが、基本的には、HTML ページのセクション (コンポーネント??) を、特定の条件下でのみアクティブになる HTML フォームにしたいと考えています (これは、オフィス内を手作業でルーティングしていたチェックリストのワークフロー アプリケーションです)。 ) 吸い上げてJSFに移植するか、Formクラスを変更した方が良いのだろうか。
編集 私は抽象的なサブフォームを実装しようとしていますが、サブフォームのこのようなものは、エントリの検証(processEntry)が失敗したと言っても、Daoを更新します
processEntry(request, ad);
processEdit_date(request, ad);
if (isSucces()) {
dao.update(ad, authenticatedUser);
}