2013-10-04 85 views
0

檢索的JavaScript的輸入值我有一個腳本,讓自動地址我不能爲JSF

<script src="${facesContext.externalContext.requestContextPath}/js/jquery.geocomplete.js"> </ script> 

<script> 
    $ (function() { 
    $ ("# geocomplete ") . geocomplete ({ 
     map: , " Give us feedback . " 
     details " form ul " 
     detailsAttribute " geo - data " 
    }) ; 

    }) ; 

,這裏的JSF部分是代碼!

<h:inputText id="geocomplete" style="margin-left:34%" type="text" value="#{creerCompteFacade.adresse}" /> 

但沒有給出地址自動

我改變

<input type="text" id="geocomplete" style="margin-left:34%" value="#{creerCompteFacade.adresse}" /> 

它運作良好,並提供了自動地址,但問題是我不能提取值的問題

An Error Occurred : 
    org.hibernate.exception.ConstraintViolationException : Column ' ADDRESS ' can not be null 

我用JSFC試過但沒有任何變化

<input jsfc="h:inputText" id="geocomplete" style="margin-left:34%" 
    type="text" value="#{creerCompteFacade.adresse}" /> 
+0

例外說,你要堅持一個EJBEntity的對象到你的數據庫,具有空因爲不存在而無法回收的地址欄。 JSF代碼在哪裏? – Omar

+1

@Omar問題在於OP對''生成的HTML使用了錯誤的id。 –

+0

你說得對。看起來他基本上錯過了''標籤。 – Omar

回答

1

我找到了解決辦法:

<script type="text/javascript"> 
    $(function(){ 
     $('input:text[id$="geocomplete"]').geocomplete({ 
      map: ".map_canvas", 
      details: "form", 
      country: "FR", 
      types: ["geocode", "establishment"] 
      }); 
    });    
</script> 

3

看起來你<h:inputText id="geocomplete"><h:form>裏面,像這樣:

<h:form> 
    <h:inputText id="geocomplete" ... /> 
</h:form> 

因此生成的HTML可能是:

<form> 
    <input id="jsf_65461:geocomplete" type="text" ... /> 
    <!-- other HTML components... --> 
</form> 

你有兩種選擇,以解決這個問題:

  1. 爲您定義一個ID <h:form>,然後生成的ID將是<formId>:<componentId>。例如:

    <h:form id="frmGeo"> 
        <h:inputText id="geocomplete" ... /> 
    </h:form> 
    

    ,將產生

    <form id="frmGeo"> 
        <input id="frmGeo:geocomplete" type="text" ... /> 
    </form> 
    

    然後你就可以在你的JavaScript/jQuery的代碼中使用此ID:

    $("#frmGeo\\:geocomplete") //the : must be escaped 
    
  2. 使用prependId="false"<h:form>所以內部的部件表單將在JSF代碼中設置id:

    <h:form id="frmGeo" prependId="false"> 
        <h:inputText id="geocomplete" ... /> 
    </h:form> 
    

    ,將產生

    <form id="frmGeo"> 
        <input id="geocomplete" type="text" ... /> 
    </form> 
    

    然後你就可以在你的jQuery代碼使用這個ID:

    $("#geocomplete") 
    

    正如BalusC指出,這種做法將打破<f:ajax>元件的使用,專爲executerender屬性。見UIForm with prependId="false" breaks <f:ajax render>

+2

'prependId =「false」'break''。不建議使用它。 – BalusC