2013-04-03 70 views
3

我有一个对话框显示用户输入。 这个对话框有一些验证,当验证失败时,blockui消失。primefaces blockui不隐藏

这适用于我的笔记本电脑上的一切。 但是,当我将war文件部署到远程服务器上并对其进行测试时,我的blockui在验证错误后不会“解除阻塞”。我得到了我的咆哮消息,说明哪个字段是错误的,咆哮消失了,但是blockui一直阻止我的对话。不允许用户更正输入。

   <p:commandButton id="bttAddUser" value="Submit" update=":contentView:lstUsers :growl" oncomplete="handleSubmitRequest(xhr, status, args, 'newUserDialog','newUserForm');" actionListener="#{userController.create}"> 
        <p:blockUI id="addBlockUI" trigger="bttAddUser" block="newUserGrid"></p:blockUI> 
       </p:commandButton> 

这两个系统,我的笔记本电脑和远程服务器都有glassfish 3.1.2.2。我试图弄清楚是否有办法做到这一点,并强制解除用户界面。

任何想法?

编辑:

这样看来,是不是一个网络问题,但别的东西: 实际上,我得到一个错误:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data 

我的对话框:

<h:form id="newUserForm"> 
     <p:panelGrid id="newUserGrid" columns="2"> 
      <h:outputText value="Email : " ></h:outputText> 
      <p:inputText value="#{userController.newUser.email}" required="true" requiredMessage="Please the email of the user" validatorMessage="Email is invalid" > 
       <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" /> 
      </p:inputText> 

      <h:outputText value="Name : " ></h:outputText> 
      <p:inputText value="#{userController.newUser.name}" required="true" requiredMessage="Please the name of the user" ></p:inputText> 

      <h:outputText value="Role"></h:outputText> 
      <p:selectOneMenu id="newUserRole" required="true" value="#{userController.newUser.roleid}" requiredMessage="A role must be chosen"> 
       <f:selectItems value="#{userController.listRoles}" var="_role" itemValue="#{_role}" itemLabel="#{_role.roleid}"></f:selectItems> 
       <f:converter converterId="misc.util.RoleConverter"></f:converter> 
      </p:selectOneMenu> 
      <h:outputText value="TimeZone"></h:outputText> 
      <p:selectOneMenu id="newUserTz" required="true" value="#{userController.newUser.tzone}" requiredMessage="TimeZone must be specified"> 
       <f:selectItems value="#{userController.listTimeZone}" var="_tz" itemValue="#{_tz}" itemLabel="#{_tz}"> </f:selectItems> 
      </p:selectOneMenu> 

      <h:outputText value="Password"></h:outputText> 
      <p:password value="#{userController.newUser.password}" required="true" requiredMessage="Define a password"></p:password> 
      <f:facet name="footer"> 
       <p:commandButton id="bttAddUser" value="Submit" update=":contentView:lstUsers :growl" oncomplete="handleSubmitRequest(xhr, status, args, 'newUserDialog','newUserForm');" actionListener="#{userController.create}"> 
       </p:commandButton> 
       <p:commandButton type="reset" value="Reset"></p:commandButton> 
      </f:facet> 
      <p:blockUI id="addBlockUI" trigger="bttAddUser" block="newUserGrid" widgetVar="blockUI"></p:blockUI> 
     </p:panelGrid> 
    </h:form> 

我在Solaris上遇到错误,但在Windows中没有。两者都有glassfish 3.1.2.2 build 5.

+1

这很有趣。我认为,blockUI被设计为在由“trigger”组件发起或涉及它的请求返回(成功?)响应之后返回。您应该在浏览器的开发人员控制台中查看http通信btw浏览器和服务器(在本地主机和远程主机上)。 – kolossus

+0

感谢提示,我一直在检查和检查,但迄今为止没有什么好处。在这两种环境中,我都会得到相同的帖子,并且只有在远程服务器上的完整交换时间比在本地计算机上长两次时才会有所不同。我认为这可能与时间安排有关,或者blockui在错误的地方。 我想我会尝试在bean中实现验证,如果它失败,就从那里隐藏:/ –

回答

1

最后解决了这个问题。

我在我的Web应用程序2个primefaces罐子:

一个域/ lib目录下的WEB-INF/lib中的另一个。

似乎在使用primefaces的某些函数时,它会返回比它应该更多的值。

发表于Primefaces Forums