일부 프로젝트에 대한 정보를 나열하는 PrimeFaces을 사용하는 간단한 페이지를 개발 중입니다. 자세한 정보가 담긴 대화 상자를 여는 버튼을 추가하고 싶었습니다. 코드는 아주 간단합니다.JSF (PrimeFaces) 페이지가 단일 양식으로 작동하지 않습니다.
<h:form id="projectForm">
<p:dataTable id="projectDataTable" var="project" value="#{projectMB.projects}" >
<p:column sortBy="name" headerText="Name">
<h:outputText value="#{project.name}" />
</p:column>
<p:column sortBy="status" headerText="Status">
<h:outputText value="#{project.status}" />
<h:outputText value=" (#{project.progress}%)" />
</p:column>
<p:column style="width:4%">
<p:commandButton update=":projectForm:display" id="selectButton" oncomplete="PF('projectDialog').show()" icon="ui-icon-search" title="View">
<f:setPropertyActionListener value="#{project}" target="#{projectMB.selectedProject}" />
</p:commandButton>
</p:column>
</p:dataTable>
<center>
<p:commandButton id="refreshProjectsButton" actionListener="#{projectMB.refreshProjectList}" icon="ui-icon-refresh" update="projectDataTable"/>
</center>
<p:dialog header="Project Detail" widgetVar="projectDialog" resizable="false" id="projectDlg" showEffect="fade" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Name:" />
<h:outputText value="#{projectMB.selectedProject.name}" style="font-weight:bold"/>
<h:outputText value="Description:" />
<h:outputText value="#{projectMB.selectedProject}" style="font-weight:bold"/>
</h:panelGrid>
</p:dialog>
</h:form>
나는 dialog
를 둘러싸 별도의 양식을 추가하여 해결책을 발견 : 그러나 그것은 작동하지 않습니다
<h:form id="projectForm">
<p:dataTable id="projectDataTable" var="project" value="#{projectMB.projects}" >
<p:column sortBy="name" headerText="Name">
<h:outputText value="#{project.name}" />
</p:column>
<p:column sortBy="status" headerText="Status">
<h:outputText value="#{project.status}" />
<h:outputText value=" (#{project.progress}%)" />
</p:column>
<p:column style="width:4%">
<p:commandButton update=":projectForm2:display" id="selectButton" oncomplete="PF('projectDialog').show()" icon="ui-icon-search" title="View">
<f:setPropertyActionListener value="#{project}" target="#{projectMB.selectedProject}" />
</p:commandButton>
</p:column>
</p:dataTable>
<center>
<p:commandButton id="refreshProjectsButton" actionListener="#{projectMB.refreshProjectList}" icon="ui-icon-refresh" update="projectDataTable"/>
</center>
</h:form>
<h:form id="projectForm2">
<p:dialog header="Project Detail" widgetVar="projectDialog" resizable="false" id="projectDlg" showEffect="fade" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Name:" />
<h:outputText value="#{projectMB.selectedProject.name}" style="font-weight:bold"/>
<h:outputText value="Description:" />
<h:outputText value="#{projectMB.selectedProject}" style="font-weight:bold"/>
</h:panelGrid>
</p:dialog>
</h:form>
내 질문은 : 첫 번째 코드가 작동하지 않는 이유를 - 방법 projectMB.refreshProjectList
를 새로 고치는 것이 java bean의 목록은 절대로 호출되지 않습니다. 자바 스크립트와 자바에서 오류가 발생하지 않습니다.
는 평소처럼, "이 작동하지 않습니다는"문제의 매우 모호한 설명입니다. 최소한의 예제도 제공해야합니다. 99 %의 경우 전체 코드를 게시하지 않고 문제를 재현 할 수 있습니다. 이는 독자의 소음입니다. –
@ Łukasz 웃 L ツ 내가 생각하는 문장은 "자바 빈에서 목록을 새로 고치는 method projectMB.refreshProjectList가 호출되지 않는다"는 것이 무엇이 문제인지 설명합니다. – gawi
버튼을 클릭해도 아무런 반응이 없으며 로그에 메시지가 전혀없고 자바 스크립트 콘솔에 요청이나 오류 메시지가 표시되지 않습니까? 데이터 테이블을 제거하면 어떻게됩니까? 최소한의 예제를 만들었습니다. 2 개의 버튼이 있습니다. 하나는 서버 메소드를 호출하고 다른 하나는 대화 상자를 엽니 다. 대화 상자는 같은 형식입니다. 모든 것이 원활하게 작동합니다. –