0

問題:動的モデルを使用して Primefaces コンポーネント ( など) を作成するとMenubar、JSF/XHTML ページ内で Ajax を介して更新するコンポーネントを指定する機能が削除されます。Java バック Bean にハード コードするのは、お粗末な方法のようです。

例:

JSF:

<h:panelGroup id="updateDiv">
    <!-- components -->
</h:panelGroup>

<p:menubar model="#{backBean.model}" />

バックビーン:

@ManagedBean
@ViewScoped
public class BackBean {
    private MenuModel model;

    public BackBean() {
        model = new DefaultMenuModel();
        MenuItem item = new MenuItem();
        item.setUpdate("updateDiv");  // Here: hardcoded dependency on JSF page.
        item.setValue("Click Me.");
        model.addMenuItem(item);
    }

    public getModel() {
        return model;
    }
}

に を指定すると、JSF ページに結合されますupdateDivBackBeanこれは悪いようですか?それは...ですか?もしそうなら、どのような代替手段がありますか?たぶん、<f:param/>または同様のものが役立つかもしれません。

4

1 に答える 1

1

個人的には、それで特に困ることはありません。いずれにせよ、バッキング Bean のコードは通常、JSF ページに結合されます。

ただし、次のような意味のある名前の定数に入れます。

private static final String CONTENT_PANEL_ID = "updateDiv";

バッキング Bean で許容されるカップリングの量について、特にプロパティとメソッドに関して、SO についてすでにいくつかの議論がありました。これらを読んで、自分で決めることをお勧めします。

于 2013-01-11T12:28:06.467 に答える