Datatable がある mainMenu-xhtml ページがあります。そのテーブルに新しいオブジェクトを追加すると、使用されているマネージド Bean がセッション スコープであるため、更新されません。更新を行うために requestScoped wrapperBean を実装しようとしています。
Faces-config:
<navigation-case>
<from-action>#{RmaBeanWrapper.submit}</from-action>
<from-outcome>refreshedMainMenu</from-outcome>
<to-view-id>/mainMenu.xhtml</to-view-id>
</navigation-case>
<managed-bean>
<managed-bean-name>RmaBeanWrapper</managed-bean-name>
<managed-bean-class>fi.controllers.RmaBeanWrapper</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>rmaBean</property-name>
<value>#{RmaBean}</value>
</managed-property>
</managed-bean>
RmaBeanWrapper
@ManagedBean
@RequestScoped
public class RmaBeanWpapper implements Serializable {
private RmaBean rmaBean;
private RmaBean refreshedBean;
public RmaBean getRmaBean() {
return rmaBean;
}
public void setRmaBean(RmaBean rmaBean) {
this.rmaBean = rmaBean;
}
public RmaBean getRefreshedBean() {
return refreshedBean;
}
public void setRefreshedBean(RmaBean refreshedBean) {
this.refreshedBean = refreshedBean;
}
public String submit() {
System.out.println("#########RmaBeanWpapper.submit#########");
this.refreshedBean = rmaBean;
return "refreshedMainMenu";
}
mainMenu.xhtml
<p:panelGrid style="margin-top:20px;" styleClass="noBorders">
<p:row rendered="true">
<p:column></p:column>
<p:column></p:column>
<p:column><p:commandButton action="#{RmaBeanWpapper.submit}" ajax="false" value="Update Table" style="width: 220px;"/></p:column>
<p:column></p:column>
</p:row>
}
何が起こっている?何もない!mainMenu.xhtml ページも開かず、サーバー ログにも例外はありません。同じように、テーブルを更新する必要がありますが、実装に問題があります。何か案は?rmaBean を sessionScoped に変更することはできません。これはソフトウェアのあらゆる場所で使用されており、変更できないためです。
乾杯、サミ