2012-02-07 2 views
0

나는 이것이 멍청한 질문 일지 모르지만 나는 대답을 찾는 데 어려움을 겪고있다.JSF 메뉴의 항목 사용

는 I 배열 I가 tempCategory이라고 QuizBean의 값에 선택된 메뉴 아이템을 저장할 필요

<f:selectItems value="#{quizBean.categoryArray}"/> 

에서 채워진 메뉴가있다. setTempCategory (String newValue) 및 getTempCategory()라는 tempCategory에 대한 getter 및 setter가 있습니다.

selectOneListbox 값을 입력해야합니다. quizBean.tempCategory는 tempCategory의 set 메소드를 참조합니다. 메뉴 항목이 setTempCategory (String newValue) 메서드로 전송되도록 newValue를 대체 할 대상은 무엇입니까?

<h:selectOneListbox value="#{quizBean.tempCategory(newValue)}"> 
<f:selectItems value="#{quizBean.categoryArray}"/> 
</h:selectOneListbox> <br/> 
<h:commandButton value="Choose Quiz" action="#{quizBean.chooseCategory(quizBean.getTempCategory)}"/> 
+0

이들은 모두 문자열입니다. 선택한 메뉴 항목의 문자열 값을 가져와 chooseCategory() 메서드를 사용하여 검색 할 수있는 곳에 저장해야합니다. – bilestrojanman

답변

0

실제로 JSF는 특정 속성의 getters/setters를 자동으로 호출합니다. 선택한 값은 tempCategory로 설정되어 있으므로 newValue를 전달할 필요가 없습니다. 액션을 위해 EL 표현식에서 getter를 호출합니다. 이 질문에 How to pass method arguments to an ActionListener?

1

귀하의 주변에 대한 BalusC에서 언급 한 바와 같이

<h:selectOneListbox value="#{quizBean.tempCategory}"> 
    <f:selectItems value="#{quizBean.categoryArray}"/> 
</h:selectOneListbox> <br/> 
<h:commandButton value="Choose Quiz" action="#{quizBean.chooseCategory(quizBean.tempCategory)}"/> 

그러나하는 액션 메소드에 대한 인수를 전달하는 기억이 엘은-API-2.2와 엘 - IMPL - 2.2 항아리 필요, 여기 당신이해야 할 일이다 , 알려 드리 자면 <f:ajax>을 추가했습니다. 드롭 다운 메뉴의 값을 변경할 때마다 값이 bean에 제출되기를 원한다. 내가 itemValueitemLabel을 사용

<h:selectOneListbox value="#{quizBean.tempCategory}"> 
    <f:selectItems value="#{quizBean.categoryArray}" var="category" itemValue="#{category.id} itemLabel="#{category.displayName}" /> 
    <f:ajax render="id_of_what_you_want_to_be_rerendered" /> 
</h:selectOneListbox> 

공지 사항, 당신은 읽을 수 here 그들이가 있지만 기본적으로 IDselectOneListBox의 값에 전달되고 label이 UI에 표시됩니다. 그런 다음 버튼을 중복 제출 <f:ajax>를 사용하는 경우

@ManagedBean 
@SessionScope // (for example...) 
public class QuizBean { 
    private String tempCategory; // will store Id of current category 

    public String getTempCategory() { 
     return tempCategory; 
    } 

    public setTempCategory(String pTempCategory) { 
     tempCategory = pTempCategory; 
    } 

    List<Category> CategoryArray; 
    // .. Getter and Setter for CategoryArray 
} 

:

빈 코드이 코드가 있어야합니다. 제출 버튼을 사용하려면 다시 추가하고 <f:ajax>을 삭제하십시오.