JSP(JavaServer Pages)是一种在服务器上运行的基于Java的视图技术,它允许您在(客户端语言,如HTML,CSS,JavaScript等)中编写模板文本,并与后端Java代码进行交互。
当我在 Struts 2 中使用调度程序结果时,我没有收到操作错误。 在操作类中,以下代码用于添加错误消息。 添加操作错误(“错误”); 返回“失败&q...
我知道,当 HTML 表单元素的名称发生更改时,为了让正在处理表单的 Servlet 检索参数,它必须知道更新的元素名称。我很...
我知道,当 HTML 表单元素的名称发生更改时,为了让正在处理表单的 Servlet 检索参数,它必须知道更新的元素名称。我很...
我的网络应用程序的所有页面上都有一个 。 我的网络应用程序的所有页面上都有一个 <s:form>。 <s:form action="search" method="post"> <s:textfield name="query" placeholder="Enter movie title..." cssClass="searchbox" /> <s:submit type="image" src="images/btn_search.gif" /> </s:form> 目前,当index.jsp类的validate()方法结果为SearchAction时,会重定向到input。 <action name="search" class="com.mypackage.action.SearchAction"> <result>/search-result.jsp</result> <result name="input">/index.jsp</result> </action> 搜索操作: public class SearchAction extends ActionSupport implements RequestAware, Message { private static final long serialVersionUID = 1L; private Map<String, Object> request; private String query; @Override public String execute() throws Exception { // business logic request.put("searchResults", searchResults); return SUCCESS; } @Override public void validate() { if(getQuery().length() == 0) { addFieldError("query", BLANK_SEARCH); } } @Override public void setRequest(Map<String, Object> request) { this.request = request; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } } 输出: 它可以工作,但每次参数无效(即空白)时,用户返回到index.jsp似乎不自然。 我的目标是当出现 请输入... 消息时让用户保持在当前页面。 问题: 如何获取调用操作的当前页面? (例如,访问者在登录页面使用了搜索,我该如何 从地址栏获取 login.jsp?) 如何使当前页面位于 <result name="input">/currentpage</result>? 您可以使用以下代码获取当前页面名称: String actionName = ServletActionContext.getRequest().getHeader("Referer"); 在 Struts.xml 中,使用动态结果,例如: <result name="input" type="redirect">${url}</result> 在action中,对url使用getter方法。默认情况下将 url 的值设置为“index.jsp”。如果要更改它,请为 url 设置适当的值。比如login.jsp等 您可以通过servlet请求获取当前页面。创建拦截器来拦截当前页面 public class CurrentPageInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation actionInvocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); Map<String, Object> session = actionInvocation.getInvocationContext().getSession(); String queryString = request.getQueryString(); String savedUrl = request.getRequestURI()+(queryString==null?"":("?"+queryString)); String currentPage = (String) session.get("savedUrl"); if(currentPage == null) currentPage = savedUrl; session.put("currentPage", currentPage); session.put("savedUrl", savedUrl); return actionInvocation.invoke(); } } 在父包中注册拦截器 <interceptors> <interceptor name="currentPage" class="com.company.interceptor.CurrentPageInterceptor"/> <interceptor-stack name="curentPageStack"> <interceptor-ref name="currentPage"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="curentPageStack"/> 添加结果返回动态参数 @Results({ @Result(name = "input", type = "redirect", location = "${currentPage}"), @Result(location= "/search-result.jsp") }) public class SearchAction extends ActionSupport implements RequestAware, SessionAware, Message { private String currentPage; //getter @Override public String execute() throws Exception { if (hasErrors()){ currentPage = (String) session.get("currentPage"); return "input"; } // business logic request.put("searchResults", searchResults); return SUCCESS; } ... } 这只是为了展示我如何使用 Jigar's 方法来解决该问题,我将其标记为已接受的答案。 struts.xml: <action name="search" class="com.mypackage.action.SearchAction"> <result>/search-result.jsp</result> <result name="input">${url}</result> </action> 我删除了type="redirect",因为字段错误消息消失了。我相信这是 Apache 文档中记录的预期行为: 重定向结果 响应被告知将浏览器重定向到指定位置 (来自客户的新请求)。这样做的后果意味着 操作(操作实例、操作错误、字段错误等) 刚刚执行的文件丢失并且不再可用。 资料来源:http://struts.apache.org/release/2.1.x/docs/redirect-result.html 搜索操作: public class SearchAction extends ActionSupport implements RequestAware, Message { private String url; public String getUrl() { return url; } @Override public String execute() throws Exception { // business logic request.put("searchResults", searchResults); return SUCCESS; } @Override public void validate() { url = ServletActionContext.getRequest().getHeader("referer") .replace("http://localhost:8080/mysite/", ""); // get resource name only if(!url.contains(".jsp")) { url = "index.jsp"; // default page } if(searchWord.length() == 0) { addFieldError("searchWord", BLANK_SEARCH); } } } 输出: 现在出现错误时停留在当前页面。
如何使用 prolog 创建相同的函数(html 输入到 jsp)
我正在做一个使用prolog与HTML集成的程序,目前一直在理解prolog中的HTTPSESSION,并希望创建与下面的JSP相同的功能。 用户输入的 HTML: ...
如何从服务器检索图像并将其显示在 Struts 2 的 JSP 页面上?
我有一个 Product 实体,其中有一个 imageUrl 字符串字段。 产品图片从用户处获取后,将保存在目录: System.getProperty("user.home") + "商店/数据/
在 Struts 2 中提交表单后,Action 的布尔值不再与 JSP 绑定
从 JSP 中,只有布尔值没有绑定到操作的布尔变量中。其他所有变量都变得绑定良好。 xBudgetFlag 是不具有约束力的布尔变量。 其他所有变量...
我们使用第三方工具,提供请求参数为“A:B”、“A:C”、“A:D”,其中A是服务(工具术语),B、C、D是参数。 如何访问变量...
如何在 Struts 1 中使用带有 <html:select> 标签的选项集合?
以下 TreeMap 包含我传递的数据库中的所有值 MaptreeMap = new TreeMap(map); 迭代器mapIterator = mapSet.it...
按照指南配置了Spring Boot,仍然找不到我的jsp视图。因此,启动后我收到此消息“此应用程序没有 /error 的显式映射,因此您看到的是...
如何在 JSP 上查看数据库中的数据,而无需在 Struts 2 中使用 scriptlet 或 Java 代码?
我正在尝试在JSP上查看数据库中的数据,所以现在我想出了在JSP中不使用alscriptlet或Java代码的想法。我学习了 modelDriven 拦截器和其他一些拦截器...
我在我的应用程序中使用了拦截器进行身份验证。我已将其添加到defaultStackHibernate 中。它工作正常并且我得到了想要的结果,唯一的问题是现在,我...
jsp 文件中的提交按钮何时会在 servlet 中返回“null”值?
我想了解我是否有一个具有以下表单的 fill.jsp 文件: 我试图了解我是否有一个 fill.jsp 文件,其形式如下: <form action="calculate" method="post"> <input id="userName" type="text" name="userName"> <input id="grossPay" type="number" name="grossPay"> <input id="noOfDependents" type="number" name="noOfDependents"> <input id="btn" type="submit" name="submit" value="Submit"> </form> 我有一个带有以下方法的servlet: protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String url = "/fill.jsp"; String buttonValue = request.getParameter("submit"); if(buttonValue != null) { // do something here } } 什么时候buttonValue == null?每次,我单击按钮都会得到值“Submit”。我无法理解什么时候才能获得按钮的“null”值? 正常情况下,按钮值永远不会得到null。 这是因为提交表单的唯一方法是单击“提交”按钮。 此外,考虑到这是一个 POST 请求,它确实是调用 servlet 的唯一方法。 但是,如果用户在控制台中修改按钮名称,那么它可能会返回null。 编辑: 如果有人尝试 XSS 攻击,或者向 servlet 的 POST 方法提交表单,则可以调用 POST servlet 请求。
使用 <s:property> 标签将值提交给 Struts 2 中的操作
JSP: 这段代码是否提交...
如何在Struts 2中使用ServletFileUpload的parseRequest上传文件? [重复]
我上传文件,并在网络应用程序中使用输入类型=“文件”进行浏览。 问题是,我得到的 FileItem 列表大小为 0,尽管我可以在下面看到所有上传的文件信息 请求 ->
通过调用 Struts 2 中的 Java 方法在 JSP 中填充下拉列表
我想调用一个Java方法,该方法返回ArrayList,并且我想将该数组列表添加到JSP中的下拉列表中。当用户从下拉列表中选择一个值时,该值将被存储...
通过调用 Struts 2 中的 Java 方法来填充 JSP 中的下拉列表
我想调用一个Java方法,该方法返回ArrayList,并且我想将该数组列表添加到JSP中的下拉列表中。当用户从下拉列表中选择一个值时,该值将被存储...
有没有办法在Struts 1中的JSP页面上预填充多个表单?
有没有办法用Struts 预先填充多个表单并使它们可用于JSP 页面? 我正在构建一个页面,上面有两种不同的表单,需要预先填充自定义数据......
有没有办法用Struts填充多个表单并使它们可用于JSP页面? 我正在构建一个页面,上面有两种不同的表单,需要预先填充的自定义数据...
有没有办法用Struts填充多个表单并使它们可用于JSP页面? 我正在构建一个页面,上面有两种不同的表单,需要预先填充的自定义数据...