2010-06-25 136 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)。