我想了解如何在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?
谢谢, 西。
答案 0 :(得分:2)
我建议您查看一些已经具有必要功能的组件的组件库。据我所知,这是 jsf方式。以下是input text with hint的示例。
答案 1 :(得分:2)
PrimeFaces有一个水印组件;
答案 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中),它将显示在文本字段中答案 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,表达式语言。