有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将公共JSP与自定义Servlet和Struts 2结合使用

(对不起我的英语:)

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

但我有一些共同点。。。由于struts标记(以前实现过),当定制Servlet应该在JSP中显示我的请求属性时,我遇到了一些问题。因此,我通过jstl标记库更改了这些标记,现在可以使用了

但是。。。在一个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) 个答案

  1. # 1 楼答案

    我在@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的好方法,但它是有效的。如果你有更好的解决方案,我愿意尝试!谢谢大家

  2. # 2 楼答案

    take each field value from the input field and write js function to fill each field in jsp source code of your page.

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