0

我有一个提供自动地址的脚本

<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}" />
4

2 回答 2

3

看起来你<h:inputText id="geocomplete">在 a 里面<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属性。请参阅带有 prependId="false" 的 UIForm 中断 <f:ajax render>

于 2013-10-04T22:11:05.547 回答
1

我找到了解决方案:

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

于 2014-10-07T16:37:38.847 回答