【问题标题】:Getting Error: UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement出现错误:UIInstructions 无法转换为 org.primefaces.model.menu.MenuElement
【发布时间】:2018-03-21 12:49:54
【问题描述】:

我正在尝试运行直接从 primefaces 网站获取的代码,但我收到 UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement

的错误>

/这是我的 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>

/这是我的 web.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>

/而且我的jar文件也放在webInf/lib中/

我已经尝试了网上所有可用的方法,但仍然无法解决它 提前致谢

【问题讨论】:

    标签: html templates primefaces jsf-2 xhtml


    【解决方案1】:

    我发现了问题所在。我直接从 primefaces 网站 (https://www.primefaces.org/showcase/ui/menu/menubar.xhtml) 复制 MenuBar 代码

    然后我意识到每行代码之间都存在不可见的字符/东西。 (我在复制/粘贴 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】:

      之间的 中使用 HTML cmets 也会发生此错误,从而导致错误

      UIInstructions 不能转换为 org.primefaces.model.menu.MenuElement

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

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 2016-05-01
        • 1970-01-01
        • 2017-07-02
        • 1970-01-01
        • 1970-01-01
        • 2017-12-02
        • 2018-06-23
        • 1970-01-01
        相关资源
        最近更新 更多