java.lang.IllegalStateException: компонент javax.faces.component.UIViewRoot не ожидаемый тип - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть файл JSP с компонентами JSF 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.Возможно, вам не хватает тега?

Как это вызвано и как я могу решить эту проблему?

1 Ответ

5 голосов
/ 08 декабря 2011

Произошла ошибка: java.lang.IllegalStateException: Компонент javax.faces.component.UIViewRoot@7cf94d3b не ожидаемого типа. Ожидаемый: javax.faces.component.UIOutput. Возможно, вам не хватает тега?

Тег <f:view> отсутствует в файле JSP, к которому относится это действие. Если вы используете устаревшую JSP в качестве технологии просмотра вместо ее преемников Facelets, вам необходимо убедиться, что все компоненты JSF заключены в родительский тег <f:view> (который находится за кулисами, представленными компонентом UIViewRoot). 1008 *

Вам необходимо изменить файл 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...