次の問題があります。
メソッドを呼び出すボタンがありますが、ページを更新する必要はありません (ボタンをクリックした後にブートストラップ モーダルに基づいてダイアログを表示すると、それ以外の場合は消えます)。したがって、私は ajax を使用して、ボタンをクリックした後に何もレンダリングされないようにします。
以前に適用して使用しましたが、機能しました。しかし、私のコードの最近のバージョンでは、ajax を使用している限り、メソッドは呼び出されなくなりました。ajax部分を削除すると、メソッドは本来あるべきように呼び出されますが、ページが更新されてしまい、それは望ましくありません。
私のコード:
<h:form>
<ui:fragment rendered="#{bean.condition1}">
<ui:include src="facelet1.xhtml" />
</ui:fragment>
<ui:fragment rendered="#{bean.condition2}">
<ui:include src="facelet2.xhtml" />
</ui:fragment>
<h:commandButton value="Save" action="bean.method">
<f:ajax execute="@form" render="@none"/>
</h:commandButton>
<h:form>
このようにして機能する前に:
<h:form>
<ui:include src="bean.faceletPath" />
<h:commandButton value="Save" action="bean.method">
<f:ajax execute="@form" render="@none"/>
</h:commandButton>
<h:form>
皆さんありがとう、
/メタルハムスター
編集:
facelet1.xhtml:
<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">
<h:body>
<ui:composition>
<h:panelGrid columns="2">
<h:outputText value="Name:">
<h:inputText value="bean.name">
<h:outputText value="Value:">
<h:inputText value="bean.value">
</h:panelGrid>
</ui:composition>
</h:body>
</html>
facelet2.xhtml:
<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">
<h:body>
<ui:composition>
<h:panelGrid columns="2">
<h:outputText value="Name:">
<h:inputText value="bean.name">
<h:outputText value="Text:">
<h:inputText value="bean.text">
</h:panelGrid>
</ui:composition>
</h:body>
</html>