【发布时间】:2014-03-07 03:55:17
【问题描述】:
我想要一个带有 JSF (Primefaces) 的表单,以便在保存时有一个必填字段(用户名就是这个例子)。您也可以向每个用户添加书籍,一个用户可以拥有 0 ... n 本书。如果你添加一本新书,需要给它一个作者和一个名字。
我用下面的代码试过了,已经试过 Primefaces 的Partial Processing 的很多方法。但是,它无法正常工作。有时我必须输入所需的用户名才能添加一本书或保存它根本不起作用。有没有办法只在保存时检查所需的用户名而忽略所需的作者和书名?
这是示例的代码:
<h:form>
<p:outputPanel id=„userdetails“>
<p:inputText id="name" value="#{bean.name}" />
</p:outputPanel>
<p:inputText id="txt_title" value="#{createBookBean.book.title}"
required="true" />
<p:inputText id="txt_author" required="true"
value="#{createBookBean.book.author}" />
<p:commandButton value="Reset" type="reset" />
<p:commandButton id="btn_add" value="Add"
update="books msgs @parent" action="#{createBookBean.reinit}">
<p:collector value="#{createBookBean.book}"
addTo="#{createBookBean.books}" />
</p:commandButton>
<p:outputPanel id="books">
<p:dataTable id="booksTable" value="#{createBookBean.books}"
var="book">
<h:outputText value="#{book.title}" />
<h:outputText value="#{book.author}" />
<p:column>
<p:commandLink value="Remove" update=":form:books"
process=":form:books">
<p:collector value="#{book}"
removeFrom="#{createBookBean.books}" />
</p:commandLink>
</p:column>
</p:dataTable>
</p:outputPanel>
<p:commandButton value="Save" update="msgs" process="@form"
action="#{bean.save()}"></p:commandButton> // button to save, and ignore required bookname
</h:form>
// 保存按钮,忽略所需的书名
【问题讨论】:
-
试试commandButton的
immediate属性 -
请发布有效的 XML 代码。请不要使用 MS Office Word 之类的东西作为 XML 编辑器。您的 XML 代码被花括号污染了,JSF/Facelets 不可能成功地编译和执行。此外,请将代码缩减到最少的必要代码,以便通过复制'n'paste'n'running 来重现确切的问题。例如,这些输出标签和列标题肯定不是重现问题所必需的。这使您的代码保持简短,专家可以更快地发现原因。尝试摆脱代码 sn-p 旁边的滚动条。
-
我希望现在更好。谢谢
标签: validation jsf jsf-2 primefaces