将通用JSP与自定义Servlet和Struts 2一起使用

时间:2014-03-04 17:40:09

标签: java jsp servlets struts2

(Oups ..对不起我的英文:))

在我的Web应用程序中,Struts2用作主Servlet调度程序和过滤器。但由于某些原因,我有一个自定义过滤器和一个用于特定URL“ / book ”的自定义servlet。

但是我有一些公共jsp ...当自定义Servlet因为struts标签(之前实现)而在JSP中显示我的请求属性时,我遇到了一些问题。所以我通过jstl taglibs更改了这些标签,现在可以正常工作。

但是...在一个JSP中,主要(lol)...我有一个搜索表单.. 这个JSP包含在几个JSP中,可以由Struts和自定义Servlet调用。

只有Struts标签是“< s:form> ..”,当提交表单时,所有发送的值都保存在输入中...但是现在,因为自定义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>

我的问题是搜索字,提交后刷新所选的选项。我需要保留它们!

有没有办法将struts标记库与标准Servlet一起使用?

或者您是否有其他解决方案来保留提交的信息?

全部谢谢!

2 个答案:

答案 0 :(得分:0)

  

从输入字段中取出每个字段值并编写js函数来填充页面的jsp源代码中的每个字段。

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

        }    

} 

答案 1 :(得分: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的非常好的方法,但它可以工作。如果你有一个,我愿意尝试更好的解决方案!谢谢大家!