如何为selectOneMenu设置自动完成功能?

时间:2013-10-08 07:11:58

标签: jsf primefaces

嗨我需要关闭selectOneMenu素数的自动完成功能,但没有这样的属性。我们在inputText和其他一些组件的primeface中有这个属性。

如何在用户刷新页面时关闭自动完成功能或仅选择默认值。

我试过这样。

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

P.S。我正在使用Liferay JSF Portlet

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

我在IE和Chrome中检查了这个问题,它在那里工作得很好。我只在Firefox中遇到这个问题。

3 个答案:

答案 0 :(得分:0)

我建议您在刷新页面时首先更新或清除 myBean.myVar 值。 这将解决问题。 并且您将无法获得默认的选定值。

答案 1 :(得分:0)

我知道这是一篇非常古老的帖子,但我今天遇到了这个问题,我认为即使我只使用JSF而不是Primeface,我写的内容对某些人也有用。

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

在我的情况下,我必须将属性直接放在h:form元素上,因为浏览器(Chrome 48)似乎忽略autocomplete元素上的select(可能是Chrome错误) ?)。

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

答案 2 :(得分: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:form:

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

我在Google Chrome中遇到了问题。

再次感谢Xonya。