2013-04-14 2 views
-3

기본적으로 사용자가 양식을 제출할 때 setter가 아닌 메소드를 호출해야합니다. 여기 JSF 페이지에서 양식을 제출할 때 메소드를 호출하는 방법은 무엇입니까?

내가 시도 것입니다 : 그것은 하나 # {quizBean.someMethod} 작동하지 않습니다

<h:form> 
    <p> 
     Your guess: <h:inputText value="#{quizBean.someMethod()}"/> 
    </p> 
    <p> 
     <h:commandButton value="Submit answer"/> 
    </p> 
</h:form> 

.

내가 라는 필드를 만들 경우

을 것으로 someMethod 그것을 위해, 그것은 잘 작동합니다 getter 및 setter를 생성합니다.

어쨌든 이것을 할 수 있습니까?

내 web.xml의 :

<web-app 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" 
    version="3.0"> 

내가 톰캣 7.0에서이 작업을 실행하고 JSF-API를 사용하고 있습니다 : 2.1.19JSF-IMPL : 2.1.19 항아리.

javax.servlet.ServletException: /index.xhtml @23,71 value="#{quizBean.someMethod()}": Property 'someMethod' not found on type com.tugay.problems.QuizBean 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) 

답변

1

번호

value 속성은 (는 get 방법)을 property 식으로 평가해야합니다

내가 점점 오전 예외입니다. 또한, 제어가 판독 전용이 아닌 경우, set 방법도 제공되어야한다.

다른 속성 (action 속성, h:commandButton 등)은 Bean의 메소드로 평가되는 표현식을 허용하지만이 표현식은 허용하지 않습니다.

유일한 해결 방법은 이미 수행 한 작업이므로 getsomeMethod입니다. JSF 페이지를 렌더링 할 때 메서드가 호출되지 않을지 조심하십시오.

1

양식 제출시 메서드를 호출 하시겠습니까? 이것은 정확하게 h:commandButton을위한 것입니다. 그냥 명령 버튼에 action 속성을 추가하고이 같은 액션 메소드를 가리 :

<h:inputText value="#{quizBean.answer}"/> 
<h:commandButton value="Submit answer" action="#{quizBean.submitAnswer}"/> 

이 콩의 방법은 다음과 같아야합니다

public String submitAnswer() { 
    // Do something with property answer 
    return null; 
} 

액션 메소드를 다음에 호출 될 때 입력 구성 요소의 값이 저장되면 문제없이 액세스 할 수 있습니다. 반환 값은 JSF에 의한 네비게이션에 사용됩니다. 뷰 ID 또는 탐색 결과를 포함 할 수 있습니다. 반환 값이 null 인 경우 JSF는 동일한 페이지에 유지됩니다.

+0

글쎄, 내가 뭘하고 싶은지 실제로 입력란에서 텍스트를 가져 와서 그 값을 가진 메소드를 호출합니다. 나는 그것이 불가능하다고 생각한다. 답변 해주셔서 감사합니다. –

+0

JSF가 (이 경우) 정확히 작동하는 방식은 아닙니다. 단지 와 같이 bean의 속성에 대한 값 표현식을 사용하면됩니다. 그런 다음 action 메소드에서'answer' 속성의 값을 사용할 수 있습니다. – Michi

관련 문제