5

所以我的团队有一个 jsf,我们使用 EL 语句读取输入框的值,工作正常,但默认情况下,我们将值设置为应该填充到字段中的值。如何在让 EL 语句正常工作的同时为输入设置默认值。例子:

 <h:inputText value="#{registrationBean.firstName}" styleClass="formEle"/>

我试过了

<h:inputText value="#{registrationBean.firstName}First Name" styleClass="formEle"/>

但这会在我们提交时中断连接。有任何想法吗?

4

4 回答 4

14

您正在寻找称为“水印”或“占位符”的东西。在低级别,现在这通常由 HTML5placeholder属性完成:

<input type="text" placeholder="First Name" />

这当然只适用于支持 HTML5 的浏览器,然后只适用于支持新 HTML5 属性的 JSF 组件。标准的 JSF<h:inputText>本身(还)不支持这个。您需要寻找支持此功能的 3rd 方组件库。其中包括 PrimeFaces 及其<p:watermark>

<h:inputText id="firstName" value="#{registrationBean.firstName}" />  
<p:watermark for="firstName" value="First Name" />  

如果由于某种原因不能使用 PrimeFaces,您需要自己重新发明它,以自定义组件和/或自定义 JS/jQuery 片段的风格,就像<p:watermark>在幕后所做的那样。

于 2012-04-12T21:29:02.953 回答
3

<h:inputText>您可以在 PostConstrut 阶段在您的支持 bean 中定义默认值。

@ManagedBean(name="registrationBean")   
public class RegistrationBean{

    private String firstName;

    @PostConstruct
    public void init(){
        firstName = "your default value";
    }

}

页面创建后显示的值h:inputText将与您在支持 bean 中定义的一样。这是一种没有任何第三方库的工作,也许它会帮助某人。

于 2013-10-28T11:04:33.670 回答
1

在加载插入 HTML5 的占位符属性后,JSF 呈现的 HTML-Tags 可以通过 JavaScript 进行修改:

<script>
  window.onload = function() {
    document.getElementById('email').setAttribute("placeholder", "Email");
    document.getElementById('pwd').setAttribute("placeholder", "Password");
  }
</script>
于 2012-11-12T12:09:49.640 回答
-1

如果您决定使用 PrimeFaces,则不需要使用水印,请参见以下示例:

<h:form>  
    <p:panel id="panel" header="Client Details" style="margin-bottom:10px;">  
    <p:messages id="messages" />  
    <h:panelGrid columns="2">

        <h:outputLabel for="firstName" value="First Name" />  
        <p:inputText id="firstName" value="#{clientlistpagebean.selectedFieldClient.firstName}" required="true" />  

        <p:outputLabel for="lastName" value="Last Name" />  
        <p:inputText id="lastName" value="#{clientlistpagebean.selectedFieldClient.lastName}" required="true" />  

    </h:panelGrid>  
    </p:panel>  

    <p:commandButton value="Submit" update="panel" style="margin-right:20px;" />  
</h:form>   
于 2012-07-07T12:21:41.040 回答