我有mainMenu-xhtml页面,其中是Datatable。当我向该表添加一个新对象时,它不会更新,因为使用的托管bean是会话范围的。我正在尝试实现requestScoped wrapperBean来进行更新。
面孔-配置:
<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页面甚至没有打开,服务器日志中甚至没有任何例外。 Samehow我必须更新我的表,但我的实现有问题。有任何想法吗?我无法将rmaBean更改为sessionScoped,因为它在软件中的任何地方都使用,我无法对其进行更改。
干杯, 萨米