2013-10-08 131 views
0

您好,我需要关闭primefaces的selectOneMenu的自动完成,但没有这样的属性。我们在inputText和其他一些组件的primefaces中有这个属性。如何为selectOneMenu关闭自动完成功能?

如何在用户刷新页面时关闭或仅获取选定的默认值。

我试过这样。

<p:selectOneMenu value="#{myBean.myVar}" autocomplete="off" id="selectMenu"> 
     <f:selectItems value="#{myBean.nameList}" var="cat" 
        itemLabel="#{cat.name}" 
        itemValue="#{cat.name}" /> 
</p:selectOneMenu> 

附:我使用的Liferay JSF的Portlet

请参考我的疑问句--- After refresh I get old values in my page

我在IE和Chrome检查这个问题,是工作的罚款在那里。我只在Firefox中遇到这个问题。

+0

你是在谈论一个普通的'selectOneMenu'还是那个有过滤的?如果你的价值没有得到清除,这是因为你仍然有它在托管的豆... –

+0

其正常的selectOneMenu。我已经尝试过没有任何变量,我得到了相同的结果 –

+1

您使用的是什么browswer?我想你用不同的浏览器尝试不同的结果。 FF和Chrome从来没有发生过,不在selectonemenu中。如果您发布了完整的SSCCE和可测试代码,它将不胜感激。 –

回答

0

我建议您在刷新页面时首先更新或清除myBean.myVar值。 这将解决问题。 ,你将不会得到默认的选定值。

+0

它已经完成。实际上,无论何时用户刷新托管bean上的页面,都会调用init()方法,以初始化包含myVar的所有值。它由于浏览器自动完成支持 –

+0

@KushSahu你能告诉你使用哪个浏览器?显示它时,你完全确定你的'myVar'值是'null'吗?在你的getter方法中用断点检查它。 –

+0

这不是由于浏览器自动完成,因此需要在此处提供托管的Bean代码。 – BholaVishwakarma

0

我知道这是一个很老的帖子,但我今天遇到了这个问题,我认为我正在写的东西可能对某人有用,即使我只使用JSF而不使用Primeface。

使用JSF 2.2,您可以使用<f:passThroughAttribute>标记添加属性(请参阅this answer)。

在我而言,我不得不直接把属性h:form元素,因为浏览器(Chrome 48)似乎忽视了select元素autocomplete(也许Chrome错误?)。

<h:form> 
    <f:passThroughAttribute name="autocomplete" value="off" /> 
    ... 
</h:form> 
0

永远不会太迟xonya。这是正确的答案:

地址:

HttpServletResponse response = (HttpServletResponse) 
FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
response.setHeader("Cache-Control", "no-cache, no-store"); 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 

而在XHTML它添加到H:形式:

<h:form> 
    <f:passThroughAttribute name="autocomplete" value="off" /> 
</h:form> 

我有问题的谷歌浏览器。

再次感谢Xonya。

+0

为什么添加的servlet响应标题的东西? – Kukeltje