JSF2.0+;Primefaces 3.0.1+;jquery 1.6.4+;p:commandLink+;IE8抛出对方法或属性的意外调用

JSF2.0+;Primefaces 3.0.1+;jquery 1.6.4+;p:commandLink+;IE8抛出对方法或属性的意外调用,jquery,html,jsf,internet-explorer-8,primefaces,Jquery,Html,Jsf,Internet Explorer 8,Primefaces,团队 我正在基于maven的jetty(8.0.1)上运行所描述的设置,并且在IE8中出现了一些奇怪的异常(仅限于!) IE给我的错误如下所示: Webpage error details User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) Timestamp: Wed, 29 Feb 2012 14:09:38 UTC Message: Unexpected call to method o

团队

我正在基于maven的jetty(8.0.1)上运行所描述的设置,并且在IE8中出现了一些奇怪的异常(仅限于!)

IE给我的错误如下所示:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Wed, 29 Feb 2012 14:09:38 UTC

Message: Unexpected call to method or property access.
Line: 23
Char: 22640
Code: 0
URI: http://127.0.0.1:8080/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces&v=3.0.1
第23行的“javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces&v=3.0.1”中描述的代码段char 22640是“finally”后面的“{”:

resolveWith:function(bw,bv){
   if(!bs&&!bu&&!br){
      bv=bv||[];
      br=1;
      try{
         while(bt[0]){
            bt.shift().apply(bw,bv)
         }
      }finally{
         bu=[bw,bv];
         br=0
      }
   }
   return this
}
在这里,JSF XHTML将重现此错误:

<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:c="http://java.sun.com/jstl/core"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
   <h:head>
   </h:head>
   <h:body>
      <h:form>
         <h:form>
            <p:dialog id="testDialog" header="Test Dialog" modal="true"
               widgetVar="testDialog" dynamic="true" resizable="true"
               maximizable="true" showEffect="fade" hideEffect="explode">
               <h:outputText value="Dialog!" />
            </p:dialog>
            <p:commandLink styleClass="button" oncomplete="testDialog.show()">
               <h:outputText value="Click me!" />
            </p:commandLink>
         </h:form>
      </h:form>
   </h:body>
</f:view>
</html>

以下JSF XHTML没有抛出错误:

<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:c="http://java.sun.com/jstl/core"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
   <h:head>
   </h:head>
   <h:body>
      <h:form>
         <p:dialog id="testDialog" header="Test Dialog" modal="true"
            widgetVar="testDialog" dynamic="true" resizable="true"
            maximizable="true" showEffect="fade" hideEffect="explode">
            <h:outputText value="Dialog!" />
         </p:dialog>
         <p:commandLink styleClass="button" oncomplete="testDialog.show()">
            <h:outputText value="Click me!" />
         </p:commandLink>
      </h:form>
   </h:body>
</f:view>
</html>

不同之处在于第一个示例中的嵌套表单。这是一个高度理想化的示例,但如果我嵌套组件和对话框,则反映了相同的行为。每当嵌套表单时,IE8.FF中就会出现上述错误,而其他人只是按预期打开对话框

If将避免嵌套表单,但这是不可能的,因为mojarra不允许我在不使用表单对其进行排序的情况下放置组件中包含的commandLink

CommandButton的行为与此相同。我已经阅读了与IE错误消息相关的其他几种方法和错误,但没有找到任何解决方案或有用的提示

以下是我感兴趣的内容:

a) 你能重现这种行为吗? b) 您是否知道如何解决这个问题(可能以某种方式更新jquery)

首先,我试图验证我的HTML5,但即使是非HTML5和非常精简的html,也会发生这种情况

感谢您的任何帮助、提示或提前链接到任何信息

问候,

那个家伙


PS:如果你认为你知道些什么,请让我提供更多的细节或所需的资源,我很幸运也能在这里帮助其他人!

嵌套表单在HTML中是非法的。浏览器行为未指定。从JSF的角度来看,你永远不应该嵌套
组件

至于你为什么需要嵌套表单

If将避免嵌套表单,但这是不可能的,因为mojarra不允许我在不使用表单对其进行排序的情况下放置组件中包含的commandLink

这不是真的。也许你把以下众所周知的警告看得太严重了

警告:表单组件的祖先中需要有UIForm。建议:将必要的组件包含在

这“只是”一个警告,而不是一个错误。如果您的页面工作正常,那么您可以忽略该警告。此警告仅在您将项目阶段设置为
Development
时显示。将其设置为
Production
时不会显示

然而,在早期的Mojarra版本中存在一个bug,当您将命令链接放入某个子/包含模板文件中,而表单放入主模板(因此位于物理上不同的文件中)时,也会出现此警告。升级Mojarra版本应修复此错误且令人困惑的警告

另见:

嵌套表单在HTML中是非法的。浏览器行为未指定。从JSF的角度来看,您不应该嵌套
组件

至于你为什么需要嵌套表单

If将避免嵌套表单,但这是不可能的,因为mojarra不允许我在不使用表单对其进行排序的情况下放置组件中包含的commandLink

这不是真的。也许你把以下众所周知的警告看得太严重了

警告:表单组件的祖先中需要有UIForm。建议:将必要的组件包含在

这“只是”一个警告,而不是一个错误。如果您的页面工作正常,那么您可以忽略该警告。此警告仅在您将项目阶段设置为
Development
时显示。将其设置为
Production
时不会显示

然而,在早期的Mojarra版本中存在一个bug,当您将命令链接放入某个子/包含模板文件中,而表单放入主模板(因此位于物理上不同的文件中)时,也会出现此警告。升级Mojarra版本应修复此错误且令人困惑的警告

另见:

那么,你的意思是,理论上我可以放弃所有存在于组件中的表单,只使用表单围绕组件包含?做了不少工作,但我会尝试,谢谢!无论你做什么,你都需要确保在层次结构中只有一个父表单。你可以使用“上帝”所有表单都包括模板,但您也可以在单个模板中以自己的形式将相关输入和按钮组合在一起。您可以有多个并行表单,但不能有多个嵌套表单。另请参见感谢BalusC,我很快更改了我的工作源代码,并在IE8中检查了它,这很有效!无论如何,这是mak的要点之一我想知道JSF。它是一种很重(超过?)的指定组件框架,让你想像处理它一样处理它,另一方面,它的(冲突的)规范约束阻碍了你。我认为下一个逻辑步骤是让编译器验证和优化输出(例如,自动减少嵌套形式,等等).谢谢,我总是在这里学到一些东西!所以你的意思是,理论上我可以放弃所有存在于组件中的表单,只使用一个表单围绕组件包含?相当多的工作,但我会尝试,谢谢!无论你做什么,你都需要确保在层次结构中只有一个父表单。你可以使用“上帝”形式包罗万象