2012-08-23 36 views
1

我在我的html頁面上有一個事件監聽器,以便當組件的值發生更改時,另一個組件將變爲強制。但這隻適用於如果你改變組件的值,保存頁面並重新加載它如何刷新html頁面上的特定組件

有沒有辦法做到這一點,而不必保存和重新加載整個頁面?

@EventListener(targets="licensingStatus", events="onchange") 
public void onLicenseStatusChange(IRequestCycle cycle){ 
.... 
} 

編輯:

可以在功能開啓

<input jwcid="[email protected]"/> 

這個

<input jwcid="[email protected]" validators="validators:maxDateToday"/> 
+1

一些代碼請。 – kosa

+0

看到我正在使用tapestry,並使用掛毯問過這個問題,但沒有回覆,所以只是想知道這是可能的,只是普通的java和html –

+0

只使用HTML和Java是不可能的。 Java將在服務器上運行,HTML在客戶端上運行。 HTML本身沒有任何腳本功能,但是如果你要包含Javascript,你可以在不刷新頁面的情況下與服務器通信(AJAX),或者使用javascript來監聽/操作html而不打擾服務器。 – Shaded

回答

1

如果組件需要被動態地生成:

最簡單的實現是使用AJAX。您可以爲頁面上的任何組件設置監聽器,並且發生更改時,請撥打AJAX調用並顯示其他組件。

否則:

如果組件已經存在,並且已經取得了初步看不見,只是需要變得可見,那麼你可以有這樣的代碼

document.getElementById('other-component').style.visibility='visible'; 
在你的聽衆

編輯:

如果你只是想在新領域是強制性的,你可以在JavaScript中創建一個檢查吧,這樣,當你輸入提交按鈕或不管它是什麼,現場檢查是否它是否爲空或者是否爲空,如果爲空則向用戶發出消息。類似這樣的:

mystring=document.getElementById('other-component').value; 
if(!mystring.match(/\S/)){ 
alert ('Empty value is not allowed'); 
return false; 
}else{ 
alert ("correct input"); 
return true; 
} 
+0

我已經在組件上有一個監聽器了,即時消息在事件監聽器被觸發時更新其他組件時遇到問題 –

+0

如果您的其他組件始終存在於頁面上,但隱藏,那麼您只需要將其可見性設置爲true監聽器。如果其他組件值根據其他以前的組件發生更改,則需要使用偵聽器實現一些Ajax調用。 –

+0

我是否必須在Java中聲明組件才能這樣做?目前我只是使用組件編號 –

0

你應該實現這個使用Ajax。

0

AJAX。可能值得看一下像jQuery這樣的框架。

0

絕對在這裏使用Javascript。您可以使用AJAX並在返回數據時使用getElementById更新各個元素。

jQuery使這容易很多。

$.ajax({ 
    url: "test.html", 
    context: document.body 
}).done(function() { 
    $("#myDiv").html("New data loaded"); 
    myGlobalMandatoryField = true; 
}); 

myGlobalMandatoryField可以在另一個函數被用於確保在一個字段被輸入的值。

+0

你能夠顯示一個簡單的例子? –