2つのManagedBeansで1つのhtmlページを使用したいとします。 URLのパラメータに応じて、JSTL変数を使用してBean名を設定します。たとえば、次のように投票が設定された変数で機能しない
<c:set var="bean" value="#{webModule1}" scope="request" />
または
<c:set var="bean" value="#{webModule2}" scope="request" />
確かにこの作品ので、私は、このすべての時間を使用したクラスを持っている:
@ManagedBean(name = "webModule1")
@ViewScoped
public class WebModule1 implements Serializable {
protected WebModulesFormBean form;
@PostConstruct
public void init() {
if (!firstInit()){
this.form= new WebModulesFormBean();
}
//some code
}
public void process() {
if(this.form.isActive()){
//some code
}
}
}
また、新しい1:
@ManagedBean(name = "webModule2")
@ViewScoped
public class WebModule2 extends WebModule1 {
public void process() {
if(this.form.isActive()){
//code with some changes
}
}
}
このソリューションは、value属性とフォームで機能します例えば、nullでないで:
<p:treeTable value="#{bean.form.root}" var="node" id="modulesTree">
しかし、私は、コードのこの部分に問題があります。リスナーが呼び出されると
<p:poll listener="#{bean.process()}" widgetVar="documentOutcome" autoStart="#{bean.form.start}" update="modulesTree" async="false"
interval="1" id="myPoll2" />
を、NullPointerExceptionが表示されます。 この問題はすべてのp:polls(私はいくつかあります)にあります。したがって、これはメソッドコードには問題ありません。 最初の変数 'form'は初期化され、treeTableはページに表示されますが、 'form'はnullです。したがって、 'フォーム'は、リスナーが呼び出されるとnullになります。
ありがとうございます!
このコードを 'bean.process()'で共有できますか?このメソッドが 'NullPointerException'を投げるかもしれない –
@ArvindKatte投稿を更新しました。コメントありがとう。 – eveillaur
可能であれば、例外メッセージを投稿して正確な根本原因を特定できない –