使Glassfish响应ajax请求JSF 2

时间:2011-07-25 23:36:38

标签: jsf-2 richfaces glassfish-3 myfaces

我正在尝试向我的服务器(Glassfish v3.1开源版)执行ajax请求,并且由于任何原因请求永远不会进入服务器,在tomcat 7上运行相同的proyect它可以正常工作,有任何配置我应该在glassfich上做什么?

我正在使用eclipse helios,jsf 2 MyFaces 2.1.1,richfaces 4.0.0和glassfish 3.1开源版

这是我的代码

<h:panelGroup>
   <h:inputText id="firstName" 
         value="#{RegistrationForm.first_name}"
         required="true"
         requiredMessage="Please enter your first name"> 
         <f:converter converterId="bankingCore.UpperCaseConventer for="firstName"/>
         <f:ajax event="blur" execute="@all" render="@form"/>
    </h:inputText>
    <h:message id="NameError" for="firstName" styleClass="errorClass"/>
</h:panelGroup>             

<h:panelGroup> <h:inputText id="firstName" value="#{RegistrationForm.first_name}" required="true" requiredMessage="Please enter your first name"> <f:converter converterId="bankingCore.UpperCaseConventer for="firstName"/> <f:ajax event="blur" execute="@all" render="@form"/> </h:inputText> <h:message id="NameError" for="firstName" styleClass="errorClass"/> </h:panelGroup>

1 个答案:

答案 0 :(得分:2)

Glassfish作为一个完整的Java EE实现,附带了一个已捆绑的JSF实现(Mojarra)。 Glassfish会在您的webapp之前自动加载它。但是,由于您在Web应用程序中捆绑了不同的JSF实现(MyFaces),因此会发生冲突。 Tomcat是一个简单的JSP / Servlet容器,并不附带捆绑的JSF,所以也没有什么会发生冲突(直到你在webapp中删除一些不同实现/版本的JSP / Servlet库)。

您有两个选择:

  1. 摆脱webapp中的MyFaces库。您的webapp将不再在Tomcat上运行,而不会更改Tomcat的共享类路径以包含JSF库。

  2. 告诉Glassfish不要加载其捆绑的JSF实现,而是使用webapp-bundled JSF。编辑webapp中的/META-INF/sun-web.xml文件以包含以下行:

    <class-loader delegate="false" />
    <property name="useBundledJsf" value="true" />