2014-02-15 2 views
0

저는 JSF에서 새롭습니다. 해결책을 찾고자하는 1 시간이 지난 후에, 저는 해결책을 구하기 위해 여기서 탈퇴합니다.jsf outputlabel에서 변수를 찾을 수 없습니다.

그래서 코드에 두 가지를 추가하면 하나는 String msg입니다. 그리고 ather public check() 메소드를 내 Users.class에 보내면 "/index.xhtml @ 12,50 value ="# {users.msg} "클래스가 생성되었습니다. 'users.Users'클래스에는 'msg '. " 오류. 내가 라인을 제거 할 때

는 :

<h:outputLabel id="outlbl" value="#{users.msg}"/><br/> 

을 행동에 조치를 대체 = 버튼을 제출에서 "인덱스"는, 그것을 잘 작동합니다. 여기

내 간단한 Users.java 코드입니다 : 그것은 바보 같은 질문 인 경우에

<?xml version='1.0' encoding='UTF-8' ?> 
<!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:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:f="http://xmlns.jcp.org/jsf/core"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 

     <h:form> 
      <h:outputLabel id="outlbl" value="#{users.msg}"/><br/> 
      <h:outputText id="outtxt" value="#{users.name}"/><br/> 
      <h:inputText id="intxt" value="#{users.name}"/><br/> 
      <h:commandButton id="btn" value="Submit" action="#{users.check()}"/> 
     </h:form> 

    </h:body> 
</html> 

은 web.xml을

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>faces/index.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

미안하지만 내가 필요

package users; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean 
@SessionScoped 
public class Users { 

private String name; 
private String msg; 

public String getMsg() { 
    return msg; 
} 

public void setMsg(String msg) { 
    this.msg = msg; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public void check(){ 
    if(name.equals("java")) { 
     msg = "Valid user!"; 
    } else { 
     msg = "Invalid User!"; 
    } 
} 
} 

index.xhtml 그것을 해결하기 전에 나는 앞으로 나아갈 것이다.

답변

0

web.xml이 불완전하기 때문에 faces 서블릿을 추가해야합니다. 그것은 지금 작동합니다 EDIT1 을 코드

<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>*.xhtml</url-pattern> 
</servlet-mapping> 

의 라인을 추가하고

<welcome-file>faces/index.xhtml</welcome-file> 

<welcome-file>index.xhtml</welcome-file> 

수정합니다. 조언으로 @ManagedBean은 더 이상 사용되지 않으므로 @Named를 대신 사용하십시오.

@Named 
@SessionScoped 
수입과

: 그렇게 빨리 답변

import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 
+0

감사합니다,하지만 여전히 같은 오류 : '/index.xhtml을 12,62 값 = "# {users.msg @ 다음과 같이 수정합니다 } ": 'users.Users'클래스에는 'msg'속성이 없습니다."더 이상의 아이디어는 무엇입니까? –

+0

Alex, JSF 2.2/Servlet 3.0부터'FacesServlet'은'* .jsf'에 자동 등록됩니다. '* .faces' 및/faces/*. [javadoc] (http://docs.oracle.com/javaee/7/api/javax/faces/webapp/FacesServlet.html)도 참조하십시오. 'FacesServlet'이 제대로 매핑되지 않았기 때문에 모든 JSF 태그가있는 Facelets 파일이 일반 텍스트로 제공되고 모든 E L 표현식은 평가되지 않으므로 이런 종류의 예외가 발생할 수 있습니다. 그러나 OP는 EL을 평가하는 동안 예외가 발생했기 때문에 이것은 Facelets 파일이 적절히 파싱된다는 것을 의미하며, 이는 FacesServlet이 성공적으로 호출되었음을 의미합니다. – BalusC

+0

내 대답을 편집했습니다. 그래도 작동하지 않는 경우, 귀하가 귀하의 앱을 실행하고있는 서버에 대해 알려주십시오. –

관련 문제