2013-01-11 32 views
0

根據selectOneMenu的選擇,我想將以下列表dynamicaly中的「title」參數傳遞給另一個jsf Facelet。我的第一種方法如下所示:帶有參數在JSF中傳遞的動態導航

<h:form id="form"> 

    <p:selectOneMenu value="#{exerciseEditorBean.selectedExerciseType}" > 
     <f:selectItem itemLabel="Multiple Choice Exercise" itemValue="MultipleChoiceExercise" /> 
     <f:selectItem itemLabel="Vocabulary Test" itemValue="VocabularyTest" /> 
    </p:selectOneMenu> 

    <h:outputText value="Enter Title of your Exercise: " /> 
    <h:inputText id="title" value="#{exerciseEditorBean.exerciseTitle}" /> 

    <h:commandButton value="Next" action="#{exerciseEditorBean.openEditor()}" /> 

</h:form> 

ExerciseEditorBean是ViewScoped。

然後openEditor()函數根據selectedExerciseType屬性決定下一個要顯示的Facelet並返回類似「multipleChoiceEditor.xhtml」的內容。 我該如何將titel屬性傳遞給此Facelet?

+0

JSF旨在基於HTTP發佈請求進行導航。這意味着當您導航到頁面時,參數也以這種方式傳遞。我非常不喜歡這個事實,因爲它也不允許書籤。我更喜歡根據帶參數化URL的獲取請求進行導航。 IMO的URL應該看起來像'/ editor/multiplechoice'而不是'/ editor.xhtml'或'/editor.xhtml?type = multiplechoice'。如果你有興趣,可以看看PrettyFaces。 ;-) – siebz0r

+0

@ siebz0r,您可以將使用''或''生成的網址標記爲書籤,並且可以方便地在其中任一個上使用'includeViewParams = true'傳遞參數。他們都使用commandXXX組件生成GETs,而不是股票POST。 – kolossus

+0

請參閱[這個答案](http://stackoverflow.com/questions/4317684/when-should-i-use-houtputlink-instead-of-hcommandlink) – kolossus

回答

0

我現在在目標servelet中使用f:ViewParam,除了「multipleChoiceEditor.xhtml?includeViewParams = true」不起作用,但這是另一個問題。感謝您的討論!