【问题标题】:Jsf default textbox valuejsf默认文本框值
【发布时间】:2010-06-25 14:28:28
【问题描述】:

我想了解如何在 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?

谢谢, 赛。

【问题讨论】:

  • 感谢您的不同建议,感谢您的宝贵时间。

标签: jsf


【解决方案1】:

我建议您查看一些已经包含具有必要功能的组件的组件库。据我了解,这是一种 jsf 方式。这是input text with hint 的示例。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      作为不需要组件库的完全不同的替代方案,您也可以通过 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 遍历和操作):

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

      【讨论】:

        【解决方案4】:
        • 你可以设置一个初始值examplebean.date(在java代码或bean中),它会出现在文本字段中
        • 什么适用于纯 html,也适用于 jsf,因为它已转换为 html
        • 对于日期组件,请查看richfaces、primefaces、icefaces、trinidad 等以获取现成的日历组件。

        【讨论】:

        • 我对这个问题的解释不同。查看 Roman 的链接,这完全符合我理解的要求。 OP 基本上要求为空字段添加“水印”:)
        • @BalusC 我也想到了这个选项(并看到了 Roman 的建议),但是由于 OP 将其称为“默认”,并且不太清楚是否应该提交该值,我提供了一个替代方案解释。 :)
        【解决方案5】:

        如果我正确理解您的问题,您的示例可以作为 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 站点中的表达式语言。

        【讨论】:

          猜你喜欢
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-23
          • 2011-08-31
          • 2019-10-18
          • 2011-10-03
          相关资源
          最近更新 更多