我知道如何创建JSF 2.0 servlet,我知道如何创建portlet,但我在组合这两种技术时遇到了问题。我的JSF portlet运行良好,直到我必须通过<h:commandLink />
调用我的支持bean的方法。当我单击这些链接时,将重新加载当前页面,并且不会调用任何方法。我认为我的应用需要一些额外的配置。为了使这样的命令链接起作用,需要做些什么:
<h:commandLink action="#{backingBean.doSomething}" />
请注意,我正在使用提供JSF 2.0 portlet桥的WebSphere 8门户服务器。
修改
我在这里看到了一个基本的冲突:
我的托管bean使用注释进行配置:
@ManagedBean(name = "backingBean")
@ViewScoped
public class entryEditController
{
public String doSomething()
{
return "result.xhtml";
}
}
这是我的faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<view-handler>com.ibm.faces20.portlet.FaceletPortletViewHandler</view-handler>
<el-resolver>com.ibm.faces20.portlet.PortletELResolver</el-resolver>
<resource-handler>com.ibm.faces20.portlet.httpbridge.PortletResourceHandler</resource-handler>
</application>
</faces-config>
答案 0 :(得分:0)
如果您的bean是@SessionScoped
或@ViewScoped
,则必须将其添加到您的web.xml:
<context-param>
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
<param-value>false</param-value>
</context-param>
<h:messages />