2010-06-25 133 views
1

我想了解如何设置JSF中文本框字段的默认值,该字段将为空onFocus。如果用户没有输入任何值,它将再次显示默认值。Jsf的默认文本框值

我能找到使用常规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" /> 

但如何配合实际值回豆?

谢谢, 赛。

+0

感谢您的不同建议,感谢您的时间。 – Sai 2010-06-28 13:01:22

回答

2

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

0
  • 你可以设置一个初始值examplebean.date(在Java代码或豆),它会出现在文本字段
  • 什么用纯HTML的工作原理,使用JSF工作为好,因为它的转化转换为日期组件的html
  • ,查看Richfaces,primefaces,icefaces,trinidad等,以便使用的日历组件。
+0

我以不同的方式解释了这个问题。检查罗马的链接,完全满足我的理解要求。该OP基本上要求为一个空的领域的“水印”:) – BalusC 2010-06-25 20:47:06

+0

@BalusC我也想到了该选项(并看到罗马的建议),但由于OP称它为“默认”,并不清楚是否价值应该提交,我提供了另一种解释。 :) – Bozho 2010-06-25 20:51:52

0

如果我正确理解你的问题,你的例子工作正常JSF。标签h:表示您已经在使用JSF。在JSF中,屏幕组件(以HTML术语 - 输入控件)绑定到java类属性(或属性),当JSF页面呈现时(Please refer to Debug JSF Life Cycle),默认或手动设置的值被设置为如果请求范围)。

使用Java表达式语言设置和检索值。在你的例子中,value =“#{examplebean.date}”,examplebean是你的bean(你应该在你的faces-config中配置),date是属性(你将有一个相应的setter和getter) - 在运行时访问java类属性是Expression Language的最大优势。

请参阅BalusC文章,获取JSF API,表达式语言在Sun网站。

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)。