f:ajax が他の jsf または html タグと連携していることについてよく読んでいますが、それだけでは十分ではないようです!
ページに (必要な?) f:ajax タグを含む commandButton があり、アクションがトリガーされません。これがコードです。
<html>
<h:head>
</h:head>
<h:body>
<h:form>
<h:commandButton action="#{bean.myFirstFunction}" value="Submit">
<f:ajax render=":wrap" />
</h:commandButton>
</h:form>
<h:panelGroup id="wrap">
<h:panelGroup id="content" rendered="#{bean.myVariable != null}">
<h:form>
<h:commandButton action="#{bean.mySecondFunction}" value="Submit">
<f:ajax render=":wrap" />
</h:commandButton>
</h:form>
</h:panelGroup>
</panelGroup>
<h:body>
</html>
上記のように、2 つのボタンを取得しました。ラップの最初の 1 つが機能し、最初に非表示になっているラップ パネルを表示する必要があります。2 つ目はラップされており、まったく異なるアクションを開始する必要があります。(ラップは見せたままにしておく必要があります)
こちらが豆です。
@ManagedBean(name = "bean")
@ViewScoped
public class myBean {
private Object myVariable;
public void setMyVariable(Object o) { ... }
public Object getMyVariable() { ... }
@PostConstruct
public void init() {
this.myVariable = null;
}
public void myFirstFonction() {
this.myVariable = new Object();
}
public void mySecondAction() {
System.out.println("here");
}
}
起動すると、最初のボタンが表示されます。それをクリックすると、2 つ目が表示されます。(したがって、最初の関数が呼び出され、オブジェクトがインスタンス化され、ajax タグを使用してラップがレンダリングされます。ただし、2 番目のボタンをクリックしても何も起こりません。
私は自分のコードの一部だけを書きました。間違いがここにあることを願っています。
パネル グループのレンダリング オプションに関するものだと思いますが、正確に見つけることができません。
ありがとう