当前位置: 首页 > 面试题库 >

java.lang.IllegalStateException:组件javax.faces.component.UIViewRoot不是预期的类型

裴翰学
2023-03-14
问题内容

我有一个包含JSF组件的JSP文件index.jsp

<body>  
        <h:form prependId="false">
                <h:panelGrid id="panelLogin" columnClasses="colLabel,colValor" columns="2">
                    <f:facet name="header">
                        <h:outputText value="Panel de Log-In" />
                    </f:facet>

                    <h:outputLabel value="Usuario" for="txtNombre" />
                    <h:inputText id="txtNombre" value="#{manejadorLogin.usuario}" />
                    <h:outputLabel value="Password" for="txtPassword" />
                    <h:inputText id="txtPassword" value="#{manejadorLogin.password}" />

                    <f:facet name="footer">
                        <h:panelGrid  columns="2">
                            <h:commandButton value="Login"  action="#{manejadorLogin.loginUsuario}" />
                            <h:commandButton value="Limpiar" type="reset"  />                                            
                        </h:panelGrid>
                    </f:facet>
                </h:panelGrid> 
        </h:form>
    </body>

当我按下“登录”按钮时,出现此错误:

发生错误:java.lang.IllegalStateException:组件javax.faces.component.UIViewRoot@7cf94d3b不是预期的类型。预期:javax.faces.component.UIOutput。也许您缺少标签?

这是怎么引起的,我该如何解决?


问题答案:

发生错误:java.lang.IllegalStateException:组件javax.faces.component.UIViewRoot@7cf94d3b不是预期的类型。预期:javax.faces.component.UIOutput。也许您缺少标签?

<f:view>操作导航到的JSP文件中缺少该标记。如果您使用遗留的JSP作为视图技术而不是其后继的Facelets,则需要确保所有JSF组件都包含在父<f:view>标记内(该父标记位于由UIViewRoot组件表示的幕后)。

您需要更改JSP文件以匹配以下基本模板(请注意<f:view>):

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html>
<f:view>
    <html lang="en">
        <head>
            <title>JSP page with JSF components</title>
        </head>
        <body>
            <h:outputText value="JSF components here." />
        </body>
    </html>
</f:view>


 类似资料:
  • 我甚至不确定如何给它一个更好的,而且不明显重复的类型,标题,但我认为这是一个关于expand.grid的不同问题。 所需输出: 尝试: > 给出单行 请求:有人能指出如何将这份4个变量的列表扩展成其中的1、2、3、4的每一个组合,没有重复项吗?

  • 问题内容: 只是为了进行回顾,有人可以快速解释一下是什么阻止了它的工作(在编译时): …以及使这种方式起作用的原因: 我不清楚使这种情况发生的机制(或其他任何作用)。 问题答案: 由于创建对象的数组,你不能让成铸造它而已。 创建一个数组。 是的,这是Collections类的缺点,也是将泛型引入Java的一种缺点。您希望可以返回E数组,但不会。 关于调用的有趣的事情:您不必使“ a”数组足够大,因

  • 我正在使用Gson解析一个JSON字符串,如下所示: 当我使用以下代码时,一切都很好: 我如何使用GSON使此工作?

  • 问题内容: 我们正在重用一个使用spring java- config(使用@Configuration)定义其bean的项目,并且在一个此类中有一个init方法。 这里的预期行为是什么?何时调用此方法?关于豆子,那就是。即,此方法的行为是否完全像配置类是Bean一样(实际上是一个吗?) 我们观察到的是,根据操作系统的不同,可以在初始化进入配置类的Bean之前调用它,从而最终导致不完全依赖项的工作

  • 我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!

  • 它打印出值的等效,这是因为这一行: 通过调用表示。 那么,如何使Hibernate相信是的实例? 我的枚举是由加载的。而由URLClassLoader加载,由另一个类加载器加载。