Jsf默认文本框值

时间:2010-06-25 14:28:28

标签: jsf

我想了解如何在JSF中设置文本框字段的默认值,该字段将为onFocus。如果用户未输入任何值,则会再次显示默认值。

我能够使用带有常规html文本框的JS找到解决方案,但找不到任何使用JSF的内容。

<h:inputText id="DT_INPUT" value="#{examplebean.date}" maxlength="11" size="10" />

类似

<h:inputText id="DT_INPUT" value="dd-MMM-yyyy" maxlength="11" size="10" />

但是如何将实际值绑定回bean?

谢谢, 西。

5 个答案:

答案 0 :(得分:2)

我建议您查看一些已经具有必要功能的组件的组件库。据我所知,这是 jsf方式。以下是input text with hint的示例。

答案 1 :(得分:2)

PrimeFaces有一个水印组件;

http://www.primefaces.org/showcase/ui/watermark.jsf

答案 2 :(得分:1)

作为一个完全不同的替代方案而不需要组件库,你也可以通过h:outputLabel和CSS / JS的良好镜头实现这一目标。

JSF:

<h:form id="form">
    <h:outputLabel for="inputId" value="dd-MM-yyyy" />
    <h:inputText id="inputId" value="#{bean.date}" />
</h:form>

CSS:

#form label {
    position: absolute;
    cursor: text;
    color: gray;
    padding: 2px;
}

JS(实际上使用jQuery,因为它疯狂地简化了DOM traversion和操作):

$(document).ready(function() {
    $('#form input').focus(function() {
        $('label[for=' + $(this).attr('id') + ']').hide();
    }).blur(function() {
        if (!$(this).val().length) $('label[for=' + $(this).attr('id') + ']').show();
    });
});

这是live demo(基于纯HTML)。

答案 3 :(得分:0)

  • 您可以将初始值设置为examplebean.date(在java代码或bean中),它将显示在文本字段中
  • 什么适用于普通的HTML,也适用于jsf,因为它已转换为html
  • 对于日期组件,请查看richfaces,primefaces,icefaces,trinidad等,以供即用型日历组件使用。

答案 4 :(得分:0)

如果我理解你的问题,那么你的例子就像JSF一样正常。标签h:表示您已经在使用JSF。

在JSF中,屏幕组件(在HTML术语 - 输入控件中)绑定到java类属性(或属性),当呈现JSF页面(Please refer to Debug JSF Life Cycle)时,默认或手动设置值已设置(如果请求作用域)。

使用Java Expression Language设置和检索值。

在您的示例中,value =“#{examplebean.date}”,examplebean是您的bean(您应该在faces-config中配置),而date是属性(您将拥有相应的setter和getter) ) - 在运行时访问java类属性是Expression Language的最大优势。

参考BalusC帖子,在Sun网站上获取JSF API,表达式语言。