2012-02-13 77 views
1

我知道HTML不是一種編程語言,所以應用面向對象的原則是不可能的,但是,如果您可以從父窗體標記繼承一個表單標記,那麼我會遇到一個惱人的問題。html <form>引用「超級」表單標籤的標籤 - 可能嗎?

由於各種原因,我想將JSP頁面拆分爲邏輯形式,但主要是爲了幫助客戶端數據輸入和相關服務器端處理的區隔化,以促進代碼的重用。但是,有一個常見的頁面範圍值需要與每個單獨的表單提交一起提交。

我可以在每個表單中複製這一個輸入,但在頁面上重複多次具有相同的值似乎很瘋狂。一個javascript的「onsubmit」函數也可以作爲答案,但是當javascript被關閉時,這是無用的。我也可以在我的java中存儲一個會話範圍變量來存儲值,但我寧願避免這種情況。

除了吸取jsp上的代碼重複之外的任何想法?

+0

你想要追加到每個表單的數據究竟是什麼?爲什麼你不想在會話中保存這些數據? – zeroos 2012-02-13 14:51:14

+0

你不喜歡重複只是價值或整個輸入? – 2012-02-13 15:03:12

+0

這是用於導航的頁面名稱字符串。不想因爲偏執狂而保持會話,因爲它可能與顯示的實際頁面不同步,因此將用戶傾倒在錯誤的頁面上。 – 2012-02-16 15:35:39

回答

0

如果您在頁面上有單獨的表單,那麼您必須複製所有這些表單中的常見數據;如果沒有在客戶端上使用JavaScript,沒有辦法「繼承」它。

如果它是隱藏的信息(和它聽起來就像是),您可以在各種形式的action屬性,讓你的JSP代碼可以重複相當無害:

<% 
    // (Be sure to URL-encode the value if necessary, not shown here) 
    String formAction = response.encodeURL("action.jsp?hiddenData=" + hiddenValue); 
%> 
... 
<form action="<%=formAction%>"> 
... 
</form> 
... 
<form action="<%=formAction%>"> 
... 
</form> 
... 

或者可以包括hidden字段,再次在JSP代碼中執行一次,然後在每個表單上將其轉出。

0

如果您需要HTML中的「繼承」,那麼JSP並不是一項好的技術。

你應該看看JSF,你將能夠繼承模板。例如,看看here