2012-05-29 54 views
0

我想動態顯示panelGroup。發生事件時動態顯示panelGroup(JSF/ICEFACES)

在這段代碼中,我有可以填滿的框。當最後一個可用框填滿數據時,將顯示一組包含一組新框的panelGroup。

<ice:panelGroup binding="#{myPage.boxes0to9}" /> 
<ice:panelGroup binding="#{myPage.boxes10to19}" /> 

我如何讓第二panelGroup中顯示只有在#最後一箱{} myPage.boxes0to9已經填寫?

謝謝!

+0

什麼是您正在使用的JSF和IceFaces版本? –

+0

@LuiggiMendoza IceFaces 1.8和JSF 2.0 :) – Nicole

回答

0

您可以通過使用一個div並顯示包裹<ice:panelGroup>實現它/通過一個javascript檢查隱藏:

<script type="text/javascript"> 
    var arrInputs = new Array(9); 
    function checkInputsFulfilled(value, index) { 
     arrInputs[index] = (value == ""); 
     var filled = true; 
     for(var i = 0; i < arrInputs.length; i++) { 
      if (arrInputs[i]) { 
       filled = false; 
       break; 
      } 
     } 
     document.getElementById("myDiv").style.display = filled ? "block" : "none"; 
    } 
</script> 

<ice:panelGroup binding="#{myPage.boxes0to9}"> 
    <!-- your 9 inputs (or more) here, I'll write 1 as a sample --> 
    <h:inputText value="#{myBean.attribute1}" onchange="checkInputsFulfilled(this.value, 0);" /> 
</ice:panelGroup> 
<div id="myDiv" style="display:none"> 
    <ice:panelGroup binding="#{myPage.boxes10to19}"> 
    </ice:panelGroup> 
</div> 

您也可以使用AJAX支持和渲染一個包裝第二JSF組件它<ice:panelGroup>但是,如果您只是清空其中一個開始輸入並且該組應該隱藏,這會產生很大的影響。當然,這最後一個行爲是在javascript中控制的,如果你不想只修改它:)。