मेरे पास एक CRUD पृष्ठ है जो एक प्राइमफ़ेस डेटाटेबल में क्वेरी (डोमेन ऑब्जेक्ट्स की एक सूची) से डेटा दिखाता है।<p:dialog> रखें जब सत्यापन विफल हो गया है
<p:dataTable
id="negozi"
var="n"
value="#{nController.theListFromQuery}"
rowKey="#{n.id}"
selection="#{nController.selected}"
selectionMode="single">
<p:column headerText="Field1">
<h:outputText value="#{n.f1}" />
</p:column>
<p:column headerText="Field2">
<h:outputText value="#{n.f2}" />
</p:column>
<p:column style="width:4%">
<p:commandButton
actionListener="#{nController.prepareEdit(n)}"
update=":editDialogId"
oncomplete="editDialog.show()"
value="Edit" />
</p:column>
...
संपादित करें बटन पर क्लिक करके एक संवाद दिखाया जाएगा:
<p:dialog
header="Edit N"
widgetVar="editDialog"
id="editDialogId">
<h:form id="formDialog">
<h:panelGrid id="editDialogTable" columns="2" cellpadding="10" style="margin:0 auto;">
<p:outputLabel for="field1" value="F1:" />
<p:inputText id="field1" value="#{nController.selected.f1}" />
<p:outputLabel for="field2" value="F2:" />
<p:inputText id="field2" value="#{nController.selected.f2}" />
<p:commandButton
value="Confirm"
actionListener="#{nController.doEdit}"
update=":form"
oncomplete="editDialog.hide()"
rendered="#{nController.selected.id!=null}" />
...
यह काम करता है। अब मैं एफ 1 को एक आवश्यक फ़ील्ड बनाना चाहता हूं।
मैं इनपुट टेक्स्ट क्षेत्र में "आवश्यक" विशेषता जोड़ता हूं और क्या होता है?
जब मैं आवश्यक फ़ील्ड के बिना प्रपत्र पुष्टि करने के लिए प्रयास करते हैं, इकाई संपादित किया जाता है नहीं (यह सही है), लेकिन संवाद बंद कर दिया है (यह सही नहीं है!)
मैं लाल देख सकते हैं जब मैं संवाद को पुनः खोलें आवश्यक (और अमान्य) फ़ील्ड पर हाइलाइट करें।
यदि मैं अमान्य है तो संवाद बंद करने से रोकने के लिए मैं क्या चाहता हूं।
क्या मुझे कुछ जेएस लिखना है या जेएसएफ मेरी मदद करेगा?
यह "सबसे साफ" कैसे है? आप आसानी से उपलब्ध एक चर चेक को जोड़ने के विकल्प पर 11-लाइन फ़ंक्शन की अनुशंसा कर रहे हैं? – kolossus
अच्छी तरह से .. मैं आपको इंगित करता हूं .. लेकिन यहां की बात "पारदर्शी छिपाने" है; मेरा मतलब है ... आप हमेशा नियमित रूप से छुपाते हैं() चाहे यह मान्य है या नहीं (कभी-कभी परीक्षण करने के बजाए); आप हर जगह छिपाने के लिए कहते हैं: oncomplete = "editDialog.hide()" और अगर सत्यापन विफल हो जाएगा या नहीं परवाह नहीं है; इसे "नीचे" संभाला जाएगा ... –