Я пытаюсь реализовать некоторые функции, показанные на веб-сайте PrimeFaces .P: commandButton в заголовке моего p: dataTable show ap: диалоговое окно, содержащее серию выводов меток / текста.Приведенный ниже пример работает ожидаемым образом:
DataTable:
<h:form id="form">
<p:dataTable id="table"
value="#{locationStockList.getDataModel(cc.attrs.collection)}"
var="item"
selection="#{locationStockList.selected}"
selectionMode="single">
<p:ajax event="rowSelect" listener="#{locationStockList.onRowSelect}"/>
<f:facet name="header">
<p:commandButton id="btnView" value="View"
update=":form:panel"
oncomplete="dialog.show()"/>
</f:facet>
<p:column>
<f:facet name="header">Stock Item</f:facet>
<h:outputText value="#{item.stockItem.name}"/>
</p:column>
<p:column>
<f:facet name="header">Location</f:facet>
<h:outputText value="#{item.location.name}"/>
</p:column>
<p:column>
<f:facet name="header">Quantity</f:facet>
<h:outputText value="#{item.quantity}"/>
</p:column>
<p:column>
<f:facet name="header">Price</f:facet>
<h:outputText value="#{item.price}"/>
</p:column>
</p:dataTable>
Диалог
<p:dialog id="dialog" widgetVar="dialog" header="Location Stock Form" width="700"
resizable="false" draggable="false" closable="false" modal="true">
<h:panelGrid id="panel" columns="3">
<h:outputLabel id="lblStockItem" for="stockItem" value="Stock Item"/>
<h:outputText id="stockItem" value="#{locationStockList.selected.stockItem.name}"/>
<p:message id="msgStockItem" for="stockItem"/>
<h:outputLabel id="lblLocation" for="location" value="Location"/>
<h:outputText id="location" value="#{locationStockList.selected.location.name}"/>
<p:message id="msgLocation" for="location"/>
<h:outputLabel id="lblPrice" for="price" value="Price"/>
<h:outputText id="price" value="#{locationStockList.selected.price}"/>
<p:message id="msgPrice" for="price"/>
<h:outputLabel id="lblQuantity" for="quantity" value="Quantity"/>
<h:outputText id="quantity" value="#{locationStockList.selected.quantity}"/>
<p:message id="msgQuantity" for="quantity"/>
</h:panelGrid>
<f:facet name="footer">
<p:commandButton value="Save" />
<p:commandButton value="Cancel" oncomplete="dialog.hide()" />
</f:facet>
</p:dialog>
</h:form>
Проблема, с которой я сталкиваюсь, заключается в том, что при попытке реализовать одно и то же диалоговое окнокак панель редактирования / обновления.И измените h: outputText в диалоге p: на h: inputText, чтобы текстовые поля были пустыми.Единственное решение, которое я нашел для этой проблемы, это установить h: inputText в disabled = «true» или readonly = «true», в котором значения видны, но не редактируются.Чтобы быть конкретным:
Они оба показывают значения, но не позволяют модификацию:
<h:outputText id="price" value="#{locationStockList.selected.price}"/>
<h:inputText id="price" value="#{locationStockList.selected.price}" readonly="true"/>
Пока это делает пустым:
<h:inputText id="price" value="#{locationStockList.selected.price}"/>