2013-11-21 23 views
0

我正在與primefaces JSF的工作,我有一個日曆字段在那些當我需要禁用某些日期,所以我已經使用屬性名爲beforeShowDay,但事情是這樣的當我使用這個屬性的日曆是不開放(不彈出),但是當我不使用beforeShowDay屬性是工作,p:壓光機不工作時,我用beforeShowDay

我的代碼是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html <!--namespaces-->> 
    <h:body> 
     <ui:composition> 
     <ui:define name="content"> 
     <script type="text/javascript"> 
      function tuesdaysAndFridaysDisabled(date) 
      { 
      var day = date.getDay(); 
      return [(day != 2 && day != 5), ''] 
      } 
     </script> 
     <h:form> 
     <p:calendar id="leavefrom" value="#{requestbean.leavefrom}" beforeShowDay="tuesdaysAndFridaysDisabled" effect="drop" pattern="yyyy/dd/MM" required="true" > 
      <p:ajax update="leaveto" event="dateSelect" /> 
     </p:calendar>  
     </h:form>      
     </ui:define> 
    </ui:composition> 
    </h:body> 
</html> 

這個任何建議。 。

+0

檢查瀏覽器控制檯。是否發生任何JavaScript錯誤?你可能有一些JavaScript函數集中的斷點,因此日曆不會彈出?你是否修改了primefaces日曆中的一些CSS定義? – Manuel

+0

我沒有看到任何控制檯中的錯誤,事情是,我在這裏使用爲了一些其他目的,是否有任何事情發生,並且主要問題是javascript fn沒有被調用 – kark

+0

刪除'ui :作品和'ui:define'。一步一步地將您的頁面降到最低,直到找到問題的根源。除去'p:ajax'以用於測試目的。檢查從Primefaces生成的JavaScript代碼是否包含字符串'preShowDay'。 – Manuel

回答

1
return [(day != 2 && day != 5), ''] 

&是Facelets中的一個特殊字符,應該會導致Facelets編譯器的錯誤「The entity name must immediately follow the '&' in the entity reference」。我真的很驚訝,你沒有得到它。也許你的編輯正在做一些特殊的事情,或者你實際上沒有按照問題所示運行代碼。在瀏覽器中檢查JSF生成的HTML輸出應該提供線索。

在任何情況下,你應該將整個腳本的<![CDATA[ .. ]]>塊:

<h:outputScript> 
<![CDATA[ 
    function tuesdaysAndFridaysDisabled(date) 
    { 
    var day = date.getDay(); 
    return [(day != 2 && day != 5), ''] 
    } 
]]> 
</h:outputScript> 

,或者更好,可以把它在一個單獨的JS文件/resources/functions.js

<h:outputScript name="functions.js" />  

然後你的代碼片段開始爲我工作。

+0

雅我得到的錯誤,但錯誤的這個問題,我剛剛從記事本複製它不是從我的'IDE'這是你。非常感謝你,這是盲目的爲我工作,但我不明白什麼原因是使用'<![CDATA [..]]>'block。是否將'JS'格式更改爲普通代碼 – kark

+1

不客氣。點擊我答案中的錯誤消息後面的鏈接以獲取詳細信息。 – BalusC