0

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 に変更することはできません。これはソフトウェアのあらゆる場所で使用されており、変更できないためです。

乾杯、サミ

4

0 に答える 0