我有一个脚本,提供自动地址
<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}" />
看起来你的<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>
您有两种方法可以解决此问题:
<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
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>
组件的使用,特别是对于execute
和render
属性。见UIForm with prependId="false" breaks <f:ajax render>我找到了解决方案:
<script type="text/javascript">
$(function(){
$('input:text[id$="geocomplete"]').geocomplete({
map: ".map_canvas",
details: "form",
country: "FR",
types: ["geocode", "establishment"]
});
});
</script>