2014-03-04 29 views
0

(Oups ..對不起,我的英語:))使用自定義的Servlet使用JSP通用和Struts 2

在我的web應用程序,Struts2的被用作主要的Servlet調度和過濾。但由於某些原因,我有一個自定義過濾器和一個自定義的servlet用於特定的URL「/book」。

但是我有一些commons jsp ...由於struts標籤(之前實現),當自定義Servlet應該在JSP中顯示我的請求屬性時,我遇到了一些問題。所以我通過jstl taglibs更改了這些標籤,現在它可以工作。

但是...在一個JSP中,主(lol)...我有一個搜索表單.. 這個JSP包含在幾個JSP中,可以通過Struts和自定義Servlet調用。

由於只有Struts的標籤是「< S:形式>。」並提交表單的時候,一切sended值保持在輸入......但現在,因爲自定義的Servlet我使用的簡單的html表單稱爲struts動作「search.do」。

由於源代碼如下:

<form method="post" action="<c:out value="${contextPath}"/>/search.do" name="search" id="search"> 
<input type="text" id="search_searchWord" value="" maxlength="200" size="100" name="searchWord"> 

<div align="right"> 
<input type="submit" value="Ok" name="searchButton" id="search"> 
</div> 

<select id="search_searchCrit" name="searchCrit"> 
<option value="0">Crit1</option> 
<option value="1">Crit2</option> 
<option value="2">Crit3</option> 
</select> 

</form> 

我的問題是搜索詞和所選擇的選項後,提交被刷新。我需要保持他們!

有沒有辦法使用標準Servlet的struts標籤庫?

或者您是否有其他解決方案來保存提交的信息?

謝謝大家!

+0

難道你不能簡單地使用兩個不同的「普通」JSP,一個用於Actions,另一個用於servlet? –

+0

嗨,沒有,因爲這個JSP可以用其他函數進行更新。謝謝,但我找到了解決方案。 – malak

+0

考慮通過回答自己的問題來分享它,以幫助未來的訪問者提供相同的問題 –

回答

0

我發現@java_seeker的幫助下解決方案。

在我的Struts動作,我有過這樣的要求:

HttpServletRequest request = ServletActionContext.getRequest(); 
request.setAttribute("searchWord", this.getSearchWord()); 

有兩種不同的方式做到這一點,請參閱:http://www.mkyong.com/struts2/how-to-get-the-httpservletrequest-in-struts-2/

的屬性在每個方法設置好的(在行動),可以刷新頁面。

然後,我只是回收和設置爲從請求中的屬性作爲與JSTL標記的變量並將其顯示爲我的HTML輸入的值:

<c:set var="searchWord" value='<%=request.getAttribute("searchWord") %>' /> 
    <input type="text" id="search_searchWor" value='<c:out value="${searchWord}" />' name="searchWord"> 

對於,我只是使用<c:choose><c:when test=""></c:when><c:otherwise><c:otherwise></c:choose>到設置選擇的選項。

現在總是顯示所有的值。也許這不是在標準servlet和Struts操作之間顯示共享相同JSP的非常好的方式,但它起作用。我願意嘗試更好的解決方案,如果你有一個!謝謝大家!

0

從輸入字段中取出每個字段值並寫入js函數來填充頁面的jsp源代碼中的每個字段。

function selectedValue(){ 
    var value =<%=request.getParameter("searchCrit")%>; 
    if(value !=null) 
     { 
      document.getElementById('search_searchCrit').innerHTML=value;   

     }  

} 
+0

謝謝,這有助於我,我沒有使用此解決方案,因爲不一定需要JavaScript 。我只需要'<%= request.getAttribute(「searchCrit」)%>',定義一個jstl變量並將其顯示爲html輸入中的值。 – malak