天天看點

jsf學習總結(一)

一、現用selectonemenu實作多極關聯下拉框

       功能是類似這樣的第一個下拉框顯示國家名

       第二個下拉框顯示省名

       第三個下拉框顯示市名

       改變國家名時 省名和市名都變化

       改變省名時 市名變化

       将selectonemenu的immediate屬性設為true時,隻考慮這三個下拉框可以達到目的

       但是其他的帶有送出動作immediate屬性為false的元件必須送出兩次行

       第一次會先執行下拉框的valuechange事件,然後就會直接跳到響應階段

       第二次則不會執行valuechange事件 原因不明

       如果不将selectonemenu的immediate屬性設為true

       改變國家名後,省名的valuechange事件也會執行,而且value值還被設成了以前的值 市名就又變回原來的清單值了

       哪位大俠知道怎麼解決

二、 <h:selectonemenu id="selectCar" value="#{form.name}"></h:selectonemenu>

       <f:selectitems value="#{form.curlist}"></f:selectitems>

    怎樣從java中獲得一個集合對象來填充這個下拉清單

    解決:  public List  getCurlist() {

          List curlist = new ArrayList();

          curlist.add(new SelectItem("1","aaa"));

          curlist.add(new SelectItem("2","bbb"));

          curlist.add(new SelectItem("3","ccc"));

<o:p> </o:p>

              return curlist;

       }

三、一個下拉框觸發一個onchang事件。将頁面重定向到另一個葉面

 public String changText(ValueChangeEvent event)

   {

          FacesContext fcontext = FacesContext.getCurrentInstance();

          String str = event.getNewValue().toString();

          loginfo.info("name:"+str);

          if(str.equals("1"))

                 return "showInformation"; //重頂向沒有起到作用

          else

                 return "success";

   }

四、required="true" 與 immediate="true"差別  在每個錄入框中加入。頁面調用預設的驗證方式

一個事件的基本流程:重建試圖、套用請求值、執行驗證、更新模型值、喚起應用程式、繪制響應頁面

<o:p> </o:p>

immediate="true:元件在套用請求值後進行處理,并跳過後續的階段。直接進行頁面繪制以響應請求,

他将指定的事件成為即時事件

  <code>

 <tr>

                            <td><h:outputText value="#{msgs.namePrompt}" /></td>

                            <td><h:inputSecret value="#{user.password}" required="true">

                                   <f:validator validatorId="onlyfun.caterpillar.Password" />

                                   <f:attribute name="pattern" value=".+[0-9]+" />

                            </h:inputSecret>

                            <p>

                            </td>

                     </tr>

</code>

                              <h:outputtext value="#{msgs.namePrompt}"></h:outputtext>

                              <h:inputsecret value="#{user.password}" required="true"></h:inputsecret>

                                   <f:validator validatorid="onlyfun.caterpillar.Password"></f:validator>

                                   <f:attribute name="pattern" value=".+[0-9]+"></f:attribute>