日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jsf表单验证_动态表单,JSF世界期待已久

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsf表单验证_动态表单,JSF世界期待已久 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jsf表單驗證

新的PrimeFaces擴展版本0.5.0帶來了新的DynaForm組件。 通常,如果知道行/列的數量,元素的位置等,則可以通過h:panelGrid或p:panelGrid構建非常簡單的表單。 靜態表單是正確的。 但是,如果在運行時動態描述表單,則無法使用h:panelGrid或p:panelGrid。 例如,如果整個表單的定義都放在數據庫或XML文件中。 DynaForm使得通過模型構建帶有標簽,輸入,選擇和任何其他元素的動態表單成為可能。 沒有限制。 在展示柜中探索其所有功能。 讓我們展示如何構建一個簡單的動態表單。

主要步驟:
創建模型實例:DynaFormModel model = new DynaFormModel();
將行添加到常規網格:DynaFormRow row = model.createRegularRow(); 添加標簽:DynaFormLabel標簽= row.addLabel(value,colspan,rowspan); 添加可編輯控件:DynaFormControl控件= row.addControl(數據,類型,colspan,rowspan); 設置標簽和控件之間的關系(可選):label.setForControl(control);

根據需要重復最后四個步驟。 從UI角度看會是什么樣? 表單驗證失敗后的屏幕截圖:

主要標簽是pe:dynaForm。 子標記pe:dynaFormControl匹配Java控件中通過“ type”屬性創建的標記。 這通常是“一對多”的關系。 下面列出了上面動態形式的XHTML / Java(控制器bean和模型)代碼。

<h:panelGroup id="dynaFormGroup"><p:messages id="messages" showSummary="true"/><pe:dynaForm id="dynaForm" value="#{dynaFormController.model}" var="data"><pe:dynaFormControl type="input" for="txt"><p:inputText id="txt" value="#{data.value}" required="#{data.required}"/></pe:dynaFormControl><pe:dynaFormControl type="calendar" for="cal" styleClass="calendar"><p:calendar id="cal" value="#{data.value}" required="#{data.required}" showOn="button"/></pe:dynaFormControl><pe:dynaFormControl type="select" for="sel" styleClass="select"><p:selectOneMenu id="sel" value="#{data.value}" required="#{data.required}"><f:selectItems value="#{dynaFormController.languages}"/></p:selectOneMenu></pe:dynaFormControl><pe:dynaFormControl type="textarea" for="tarea"><p:inputTextarea id="tarea" value="#{data.value}" required="#{data.required}" autoResize="false"/></pe:dynaFormControl><pe:dynaFormControl type="rating" for="rat"><p:rating id="rat" value="#{data.value}" required="#{data.required}"/></pe:dynaFormControl><f:facet name="buttonBar"><p:commandButton value="Submit" action="#{dynaFormController.submitForm}"process="dynaForm" update="_mainForm_dynaFormGroup"/><p:commandButton type="reset" value="Reset" style="margin-left: 5px;"/></f:facet></pe:dynaForm> </h:panelGroup>@ManagedBean @ViewScoped public class DynaFormController implements Serializable {private DynaFormModel model;private static List<SelectItem> LANGUAGES = new ArrayList<SelectItem>();public DynaFormController() {model = new DynaFormModel();// add rows, labels and editable controls// set relationship between label and editable controls to support outputLabel with "for" attribute// 1. rowDynaFormRow row = model.createRegularRow();DynaFormLabel label11 = row.addLabel("Author", 1, 1);DynaFormControl control12 = row.addControl(new BookProperty("Author", true), "input", 1, 1);label11.setForControl(control12);DynaFormLabel label13 = row.addLabel("ISBN", 1, 1);DynaFormControl control14 = row.addControl(new BookProperty("ISBN", true), "input", 1, 1);label13.setForControl(control14);// 2. rowrow = model.createRegularRow();DynaFormLabel label21 = row.addLabel("Title", 1, 1);DynaFormControl control22 = row.addControl(new BookProperty("Title", false), "input", 3, 1);label21.setForControl(control22);// 3. rowrow = model.createRegularRow();DynaFormLabel label31 = row.addLabel("Publisher", 1, 1);DynaFormControl control32 = row.addControl(new BookProperty("Publisher", false), "input", 1, 1);label31.setForControl(control32);DynaFormLabel label33 = row.addLabel("Published on", 1, 1);DynaFormControl control34 = row.addControl(new BookProperty("Published on", false), "calendar", 1, 1);label33.setForControl(control34);// 4. rowrow = model.createRegularRow();DynaFormLabel label41 = row.addLabel("Language", 1, 1);DynaFormControl control42 = row.addControl(new BookProperty("Language", false), "select", 1, 1);label41.setForControl(control42);DynaFormLabel label43 = row.addLabel("Description", 1, 2);DynaFormControl control44 = row.addControl(new BookProperty("Description", false), "textarea", 1, 2);label43.setForControl(control44);// 5. rowrow = model.createRegularRow();DynaFormLabel label51 = row.addLabel("Rating", 1, 1);DynaFormControl control52 = row.addControl(new BookProperty("Rating", 3, true), "rating", 1, 1);label51.setForControl(control52);}public DynaFormModel getModel() {return model;}public String submitForm() {... // do something}public List<SelectItem> getLanguages() {if (LANGUAGES.isEmpty()) {LANGUAGES.add(new SelectItem("en", "English"));LANGUAGES.add(new SelectItem("de", "German"));LANGUAGES.add(new SelectItem("ru", "Russian"));LANGUAGES.add(new SelectItem("tr", "Turkish"));}return LANGUAGES;} }public class BookProperty implements Serializable {private String name;private Object value;private boolean required;public BookProperty(String name, boolean required) {this.name = name;this.required = required;}public BookProperty(String name, Object value, boolean required) {this.name = name;this.value = value;this.required = required;}// getter // setter } 您會看到一個重要功能是對標簽的內置支持。 DynaForm自動呈現標簽-無需編寫p:outputLabel。 另一個功能是autoSubmit標志。 它允許在URL中傳遞表單參數,在頁面加載時構建表單并自動提交。 更多亮點:可擴展的擴展視圖區域(網格),打開/關閉狀態保存,小部件的客戶端API,各種方面。 接下來的屏幕截圖展示了如何使用字段上方的標簽和諸如PrimeFaces分隔符之類的各種元素構建動態表單。 通過單擊“切換模型”鏈接來切換此示例中的兩種形式。 注意,帶有pe:dynaForm的XHTML代碼保持不變,只有Java模型被更改。

探索用例中的相應代碼還有另一種形式 。

參考: 動態形式,JSF世界在我們的JCG合作伙伴 Oleg Varaksin的軟件開發博客上 很期待 。


翻譯自: https://www.javacodegeeks.com/2012/06/dynamic-forms-jsf-world-was-long.html

jsf表單驗證

總結

以上是生活随笔為你收集整理的jsf表单验证_动态表单,JSF世界期待已久的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。