我无法检索jsf的javascript输入值

问题描述 投票:0回答:2

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

<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}" />
jsf
2个回答
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. 为你的<h:form>定义一个id,然后生成的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>

1
投票

我找到了解决方案:

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

© www.soinside.com 2019 - 2024. All rights reserved.