У меня есть проект Primefaces со следующим Xhtml файлом:действия Primefaces CommandButton не работает
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition>
<h:form>
<p:dataTable id="parameters" var="parameter" value="#{devTestController.parameters}"
editable="true" editMode="cell" widgetVar="parameterTable"
selection="#{devTestController.selectedRow}" selectionMode="single"
rowKey="#{parameter}">
<f:facet name="header">
Parameters
</f:facet>
<p:column headerText="Parameter Name" style="width:30%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{parameter.label}" /></f:facet>
<f:facet name="input"><p:inputText id="parameterNameInput" value="#{parameter.label}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Parameter Value" style="width:60%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{parameter.value}" /></f:facet>
<f:facet name="input"><p:inputText value="#{parameter.value}" style="width:96%" label="Parameter Value"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Action" style="width:10%">
<p:commandButton value="Button in table" action="#{devTestController.doAction()}"/>
</p:column>
</p:dataTable>
<p:commandButton value="Button outside table" action="#{devTestController.doAction()}"/>
</h:form>
<p:commandButton value="Button outside form" action="#{devTestController.doAction()}"/>
</ui:composition>
</h:body>
</html>
Здесь у меня есть 3 commandButtons (р: CommandButton). Один находится внутри dataTable (итерирующий компонент), один находится за пределами dataTable, а один находится за пределами h: form. Удивительно, но единственная работающая за пределами h: form (последняя). Я искал интернет в течение 5 часов и уже много пробовал. Я не понимаю, почему это происходит. Я читал много сообщений о подобных проблемах, но никто из них не решил мое дело. Очень хороший this от BalusC. Я прочитал все случаи, и я не могу найти ответ. Сначала я подозревал, что я вложил несколько компонентов UIForm друг в друга (случай 2), и я искал в исходном файле xhtml, который содержит выше, но это не так. У меня нет других тегов h: form в моем коде, кроме этого. В конце концов, если я полностью удалю тег h: form, то no commandButton работает, и я также получаю «Компонент формы должен иметь UIForm в своей родословной. Предложение: приложить необходимые компоненты в h: form" предупреждение. Что здесь может пойти не так?
Кажется, что у меня не было «setSelectedRow» в моей фасоли. Сейчас все работает отлично. Спасибо! –
Добро пожаловать! Обратите внимание, что здесь вообще не нужно 'ui: composition'. Более того, это делает таблицу ваших перфолей не соответствующей стилю. –