【问题标题】:Use common JSP with a custom Servlet and Struts 2使用带有自定义 Servlet 和 Struts 2 的通用 JSP
【发布时间】:2014-03-04 17:40:08
【问题描述】:

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

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

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

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

只有 Struts 的标签是“..”,当提交表单时,所有发送的值都保存在输入中......但是现在,由于自定义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 一起使用?

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

谢谢大家!

【问题讨论】:

  • 你不能简单地使用两个不同的“通用”JSP,一个用于操作,另一个用于 servlet 吗?
  • 您好,否,因为此 JSP 可以使用其他功能进行更新。谢谢,但我找到了解决方案。
  • 考虑通过回答您自己的问题来分享它,以帮助将来遇到同样问题的访问者
  • 当您添加此评论时,我正在写它:p

标签: java jsp servlets struts2


【解决方案1】:

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

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

        }    

} 

【讨论】:

  • 谢谢,这对我有帮助,我没有使用这个解决方案,因为不一定需要 javascript。我只是取&lt;%=request.getAttribute("searchCrit")%&gt;,定义一个jstl变量并将其显示为html输入中的值。
【解决方案2】:

我在@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">

对于 ,我只是使用了&lt;c:choose&gt;&lt;c:when test=""&gt;&lt;/c:when&gt;&lt;c:otherwise&gt;&lt;c:otherwise&gt;&lt;/c:choose&gt; 来设置选定的选项。

现在总是显示所有值。也许这不是在标准 servlet 和 Struts 动作之间显示共享同一 JSP 的好方法,但它确实有效。如果你有一个更好的解决方案,我愿意尝试一个更好的解决方案!谢谢大家!

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2014-01-29
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多