java.lang.ClassCastException: java.lang.String 无法转换为 org.primefaces.component.api.ClientBehaviorRenderingMode
java.lang.ClassCastException: java.lang.String cannot be cast to org.primefaces.component.api.ClientBehaviorRenderingMode
我需要将 hostPage
参数值发送到我的 bean loginDialog()
方法。
<h:commandButton id="loginbtn" value="Sign in" action="#{userBean.loginDialog()}" class="btn-myForm" >
<f:param name="hostPage" value="Books"/>
<p:ajax process="@form" update="@form"/>
</h:commandButton>
但是我得到了这个错误:
java.lang.ClassCastException: java.lang.String cannot be cast to org.primefaces.component.api.ClientBehaviorRenderingMode
当我删除 <f:param>
或 <p:ajax>
时,我没有错误。这是怎么造成的,我该如何解决?
我不知道 primefaces,但我建议如下:
如果你想用AJAX发送表单数据,那么:
<h:commandButton value="Sign in">
<f:param name="hostPage" value="Books"/>
<f:ajax execute="@form" render="@form" listener="#{userBean.loginDialog}" ></f:ajax>
</h:commandButton>
在你的 bean 中:
public final void loginDialog(AjaxBehaviorEvent event) {
String param = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("hostPage");
}
或 (EL 2.2)
<h:commandButton value="Sign in">
<f:ajax execute="@form" render="@form" listener="#{userBean.loginDialog('Books')}" ></f:ajax>
</h:commandButton>
在你的 bean 中:
public final void loginDialog(String param) {
}
看起来 org.primefaces.behavior.ajax.AjaxBehaviorRenderer 可能有 had/has 一个缺陷导致您看到的异常。无论如何,还有其他几种方法可以实现您需要完成的任务。这是一种密切反映问题措辞的方法(自 JSF 2.0 起有效):
<h:commandButton id="loginbtn" value="Sign in" action="#{userBean.loginDialog(Books)}" class="btn-myForm" >
<f:ajax execute="@form" render="@form" />
</h:commandButton>
并且在您的托管 Bean 中:
public String loginDialog(String pageName) {
String nextPage = pageName;
}
但正如我所说,这只是一种方法。您可以在线找到大量关于在 JSF 中传递参数的文档。
我需要将 hostPage
参数值发送到我的 bean loginDialog()
方法。
<h:commandButton id="loginbtn" value="Sign in" action="#{userBean.loginDialog()}" class="btn-myForm" >
<f:param name="hostPage" value="Books"/>
<p:ajax process="@form" update="@form"/>
</h:commandButton>
但是我得到了这个错误:
java.lang.ClassCastException: java.lang.String cannot be cast to org.primefaces.component.api.ClientBehaviorRenderingMode
当我删除 <f:param>
或 <p:ajax>
时,我没有错误。这是怎么造成的,我该如何解决?
我不知道 primefaces,但我建议如下:
如果你想用AJAX发送表单数据,那么:
<h:commandButton value="Sign in">
<f:param name="hostPage" value="Books"/>
<f:ajax execute="@form" render="@form" listener="#{userBean.loginDialog}" ></f:ajax>
</h:commandButton>
在你的 bean 中:
public final void loginDialog(AjaxBehaviorEvent event) {
String param = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("hostPage");
}
或 (EL 2.2)
<h:commandButton value="Sign in">
<f:ajax execute="@form" render="@form" listener="#{userBean.loginDialog('Books')}" ></f:ajax>
</h:commandButton>
在你的 bean 中:
public final void loginDialog(String param) {
}
看起来 org.primefaces.behavior.ajax.AjaxBehaviorRenderer 可能有 had/has 一个缺陷导致您看到的异常。无论如何,还有其他几种方法可以实现您需要完成的任务。这是一种密切反映问题措辞的方法(自 JSF 2.0 起有效):
<h:commandButton id="loginbtn" value="Sign in" action="#{userBean.loginDialog(Books)}" class="btn-myForm" >
<f:ajax execute="@form" render="@form" />
</h:commandButton>
并且在您的托管 Bean 中:
public String loginDialog(String pageName) {
String nextPage = pageName;
}
但正如我所说,这只是一种方法。您可以在线找到大量关于在 JSF 中传递参数的文档。