代码之家  ›  专栏  ›  技术社区  ›  Irum

获取错误:UI指令无法强制转换到组织。素数面。模型菜单菜单元素

  •  2
  • Irum  · 技术社区  · 7 年前

    我试图运行直接从primefaces网站获取的代码,但我得到了一个错误 UIInstructions不能强制转换为org。素数面。模型菜单菜单元素

    这是我的AddUser。xhtml代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui"
          >
    
    <h:head>
            <title>Getting User Information</title>
    
    </h:head>
    <h:body>
    <h:form>
            <p:menubar>
            <p:submenu label="File" icon="ui-icon-document">
                <p:submenu label="New" icon="ui-icon-contact">
                    <p:menuitem value="Project" url="#" />
                    <p:menuitem value="Other" url="#" />
                </p:submenu>
                <p:menuitem value="Open" url="#" />
                <p:separator />
                <p:menuitem value="Quit" url="#" />
            </p:submenu>
     
            <p:submenu label="Edit" icon="ui-icon-pencil">
                <p:menuitem value="Undo" url="#" icon="ui-icon-arrowreturnthick-1-w" />
                <p:menuitem value="Redo" url="#" icon="ui-icon-arrowreturnthick-1-e" />
            </p:submenu>
     
            <p:submenu label="Help" icon="ui-icon-help">
                <p:menuitem value="Contents" url="#" />
                <p:submenu label="Search" icon="ui-icon-search">
                    <p:submenu label="Text">
                        <p:menuitem value="Workspace" url="#" />
                    </p:submenu>
                    <p:menuitem value="File" url="#" />
                </p:submenu>
            </p:submenu>
     
            <p:submenu label="Actions" icon="ui-icon-gear">
                <p:submenu label="Ajax" icon="ui-icon-refresh">
                    <p:menuitem value="Save" actionListener="#{menuView.save}" icon="ui-icon-disk" update="messages"/>
                    <p:menuitem value="Update" actionListener="#{menuView.update}" icon="ui-icon-arrowrefresh-1-w" update="messages"/>
                </p:submenu>
                <p:submenu label="Non-Ajax" icon="ui-icon-newwin">
                    <p:menuitem value="Delete" actionListener="#{menuView.delete}" icon="ui-icon-close" update="messages" ajax="false"/>
                </p:submenu>
            </p:submenu>
     
            <p:menuitem value="Quit" url="http://www.primefaces.org" icon="ui-icon-close" />
     
            <f:facet name="options">
                <p:inputText style="margin-right:10px" placeholder="Search"/>
                <p:commandButton type="button" value="Logout" icon="ui-icon-extlink" />
            </f:facet>
        </p:menubar>
    
    </h:form>
    </h:body>
    </html>
    

    / 这是我的网站。xml文件 /

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>UserWebApp</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
         <url-pattern>*.xhtml</url-pattern>
        <url-pattern>*.jsf</url-pattern>
    
      </servlet-mapping>
    
       <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>afterdark</param-value>
        </context-param>
    
        <context-param>
        <param-name>facelets.SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
        </context-param>
    
    
        <context-param>
        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
        <param-value>/WEB-INF/my.taglib.xml</param-value>
    </context-param>
    
    </web-app>
    

    /

    enter image description here

    我已经尝试了网上的一切,但仍然无法解决它 提前感谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   Irum    7 年前

    我解决了这个问题。我是直接从primefaces网站复制菜单栏代码的( https://www.primefaces.org/showcase/ui/menu/menubar.xhtml )

    然后我意识到在每一行代码之间都有看不见的字符/东西。(我在复制/粘贴java类代码时发现了这一点), 一旦这些看不见的东西被删除,我的代码就能完美地工作。

    / 以下代码也是primefaces网站代码,但没有不可见的字符

    <h:form>
    <p:growl id="messages"/>
    <p:menubar>
    <p:submenu label="File" icon="ui-icon-document">
    <p:submenu label="New" icon="ui-icon-contact">
    <p:menuitem value="Project" url="#" />
    <p:menuitem value="Other" url="#" />
    </p:submenu>
    <p:menuitem value="Open" url="#" />
    <p:separator />
    <p:menuitem value="Quit" url="#" />
    </p:submenu>
    <p:submenu label="Edit" icon="ui-icon-pencil">
    <p:menuitem value="Undo" url="#" icon="ui-icon-arrowreturnthick-1-w" />
    <p:menuitem value="Redo" url="#" icon="ui-icon-arrowreturnthick-1-e" />
    </p:submenu>
    <p:submenu label="Help" icon="ui-icon-help">
    <p:menuitem value="Contents" url="#" />
    <p:submenu label="Search" icon="ui-icon-search">
    <p:submenu label="Text">
    <p:menuitem value="Workspace" url="#" />
    </p:submenu>
    <p:menuitem value="File" url="#" />
    </p:submenu>
    </p:submenu>
    <p:submenu label="Actions" icon="ui-icon-gear">
    <p:submenu label="Ajax" icon="ui-icon-refresh">
    <p:menuitem value="Save" actionListener="#{menuView.save}" icon="ui-icon-disk" update="messages"/>
    <p:menuitem value="Update" actionListener="#{menuView.update}" icon="ui-icon-arrowrefresh-1-w" update="messages"/>
    </p:submenu>
    <p:submenu label="Non-Ajax" icon="ui-icon-newwin">
    <p:menuitem value="Delete" actionListener="#{menuView.delete}" icon="ui-icon-close" update="messages" ajax="false"/>
    </p:submenu>
    </p:submenu>
    <p:menuitem value="Quit" url="http://www.primefaces.org" icon="ui-icon-close" />
    <f:facet name="options">
    <p:inputText style="margin-right:10px" placeholder="Search"/>
    <p:commandButton type="button" value="Logout" icon="ui-icon-extlink" />
    </f:facet>
    </p:menubar>
    
    </h:form>
    
        2
  •  1
  •   Jose Manuel Gomez Alvarez    3 年前

    在内部使用HTML注释时也会发生此错误<p: contextmenu>介于(<);p: menuitem>,导致错误的原因

    UIInstructions不能强制转换为org。素数面。模型菜单菜单元素

    <p:contextmenu ...>
      <!-- Menu Item XYZ -->
      <p:menuitem ...>