2012-09-16 75 views
0

在我的JSP中,我有一個表單(action =「myServlet」,method ='post',enctype ='multipart/form-data')with 2提交按鈕。從servlet中識別出哪些按鈕被按下了表單

我需要識別哪些按鈕在myServlet中被按下。 如果有可能我想避免使用會話...

有關如何做到這一點的任何想法?

編輯:------------------------------------------- ------------------------------
以下所有文字都是在編輯後添加的。 Strong文本也隨編輯一起添加。

現在我有3個按鈕,而不是2,我不得不添加一個JavaScript函數給他們每一個(onclick),這個函數在提交前驗證字段,所以我不得不修改按鈕並設置type = button(他們不再提交按鈕,因爲提交它們會始終調用servlet,即使驗證是錯誤的)。

我用來識別哪個提交按鈕被點擊(在servlet中)的方法是遍歷與請求一起發送的所有FileItem,並且如果它們中的任何一個的名稱是任何我的表單中的3個按鈕,然後那個按鈕就是用戶點擊的按鈕。當按鈕具有type = submit時,這種方式非常完美,但現在它們是簡單的按鈕,顯然它們不會與請求一起發送,所以當我在Servlet中獲取FileItems時,它們都不是任何按鈕......所以,我以前使用的是現在無用的。

我不知道如何做到這一點,而不做奇怪的事情,例如:添加一個不可見的文本字段的形式,充滿了我點擊按鈕的名稱(使用JavaScript)...任何更好的想法?

回答

0

指定名稱的按鈕

 

    <form action="MyServlet.do"> 
     <input type="submit" value="Submit 1" name="b1"> 
     <input type="submit" value="Submit 2" name="b2"> 
    </form> 

然後在Servlet

 

    HashMap<String, String[]> map = (HashMap<String, String[]>) request.getParameterMap(); 
    out.println(map.containsKey("b1")); 
    out.println(map.containsKey("b2")); 

被點擊將被髮送,並且將返回true

+0

給新人:這個答案是在編輯之前發佈的,現在我遇到的問題是不同的。 – Simpson

0

了一個我不知道是否我我正確地解決你的問題。這就是我明白, 現在您的窗體上的按鈕不再提交按鈕。所以你想知道哪個按鈕 被點擊。好的,我可以爲你提供一個解決方案。你可以保持一個隱藏的輸入類型,當你點擊任何按鈕時,你將它綁定到一個叫做click的javascript函數。這裏 是你應該編碼的javascript函數的僞代碼。

function click(){ 
// step-1 get a list of all input type using getElementbyId function 
// step-2 check to which ones are buttons 
// step-3 now see whether names are equal to button one or two or three 
// step-4 base on which button was clicked set the value of hidden variable like button1,button2,button3 
// step-5 Retrieve the value of the hidden field in yourservlet and check which one was clicked. 
// step-6 submit the form 
} 

我希望這可以幫助您的查詢。 BR, 本

+0

感謝您的幫助,但這正是我說我最好避免做的事情:「我不知道如何做到這一點,而不做奇怪的事情,例如:添加一個不可見的文本字段填充名稱按鈕我點擊(使用JavaScript)...任何更好的想法?「。 我不想這樣做,因爲它看起來不自然,也許有很好的解決方案。如果沒有其他解決方案,那麼我會實現這個看不見的輸入。 – Simpson

+0

這是一個相當普遍的邏輯。你可以通過添加switch語句來改善它。另一種方式可以是當你點擊時,發送附加到鏈接的附加參數。該參數將告訴哪個按鈕被點擊。但是這個解決方案與之前的解決方案類似。如果有人提供更好的解決方案,我也在等待。 – benz

相關問題