viewBeanに対する最初の「ポストバックされない」リクエストで、sessionBeanのsomeValueプロパティがnullです。 ポストバック要求で、someValueにユーザー入力を設定しています。問題は、someValueが "nonpostback"要求で常にnullであることです。私は私が何か間違ったことをやっている感じセッションBeanが失われましたか?
@ManagedBean
@ViewScoped
public class ViewBean implements Serializable {
@ManagedProperty(value = "#{sessionBean}")
private SessionBean sessionBean;
private String inputText;
@PostConstruct
public void init() {
if (sessionBean.getSomeValue() != null) // ALWAYS NULL
doSomething(sessionBean.getSomeValue());
}
private void doSomething(String s) {}
public void action(final ActionEvent ae) {
sessionBean.setSomeValue(getInputText());
doSomething(getInputText());
}
GETTERS/SETTERS
}
@ManagedBean
@SessionScoped
public class SessionBean implements Serializable {
private String someValue;
GETTER/SETTER
}
: はここに私のコードです。私はMojarra 2.1.2を使用しています アドバイスをいただければ幸いです。ありがとうございました。
UPDATE: 両方の方法(initとアクション)にevaluateExpressionGetを使用したが、正常に動作します:
FacesContext context = FacesContext.getCurrentInstance();
SessionBean sessionBean = context.getApplication().evaluateExpressionGet(context,
"#{sessionBean}", SessionBean.class);
我々はclient' 'に' javax.faces.STATE_SAVING_METHOD'を維持したい場合は、任意のソリューションを持続し、新たな価値の力でrefreshSessionを()を呼び出しますか? – blo0p3r