动态是一个广泛使用的术语,通常描述程序在运行时而不是在编译时做出的决定。
我的网络应用程序的所有页面上都有一个 。 我的网络应用程序的所有页面上都有一个 <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); } } } 输出: 现在出现错误时停留在当前页面。
Next.js 15 动态路由对于嵌套路由失败,例如 [endpoint]/[entry]
我添加了一条动态路线,如下图所示 [endpoint]文件夹中的page.tsx是 类型道具= { 参数:承诺<{ endpoint: string}> } const page = async ({params}: Props) =>...
如何在 React Typescript 中输入动态标签元素的 refObject?
这个问题不断重复出现,我似乎总是围绕它编写代码,所以我希望有人可以帮助我阐明输入此问题的正确方法。 函数 MyComponent({ isCondition }): ...
我有 30 多个类用作 Child 类的通用参数。这里 TKind 可以是大约 30 个类中的任何类。 内部密封类Child:基础 { 噗...
我正在使用vuejs,我想知道如何控制输入(必要时添加禁用属性)。有没有办法在vuejs中动态添加属性?在我的 Textfield 组件下面: ...
您好,我正在尝试将一组定义如下的存储桶通知转换为映射:序列结构,以便我可以使用存储桶通知中的动态块迭代序列。
首先假设我有一个抽象类,我们称之为AbstractClass。 认为 公共抽象 AbstractClass { 公共抽象无效 F(); } 假设我有一个类,我们称之为 Clas...
我在 Python 中有一个概念证明,它只是不断重绘窗口,跟踪时间,并随着时间的推移删除图像。这看起来不错,但感觉很笨重,不确定我是否相信这个......
Terraform - 如何将地图中的内部元素列表合并到具有设置类型值的地图中
您好,我正在尝试将一组定义如下的存储桶通知转换为映射:序列结构,以便我可以使用存储桶通知中的动态块迭代序列。
我有一个不断更新的数据文件。我想使用 Gnuplot 动态绘制更新数据文件,可能使用最后 100 个数据点的窗口。 是否可以?如果是这样,请指点...
Starnge问题我似乎找不到根源, 我正在使用 jqgrid 它将更新编辑和删除的数据提交到我的页面 server.php 由于有时值是空的,我已经为 up 编写了代码...
我正在使用 bs4 和 selenium 来抓取土地拍卖网站(URL https://bid.hertz.ag/ui/auctions/112571/14320874),但我无法抓取拍卖日期和附件链接在 '
如何使用 next/dynamic 动态加载 Nextjs 15 中的组件而不出现以下错误?
我正在尝试加载一个组件: '使用客户端'; 从“下一个/动态”导入{动态}; 从'react-dom'导入{useFormState}; 从'@/lib/actions'导入{postAction}; 导入
我正在尝试使用 python 动态创建 bash 别名(例如,登录到一组服务器的别名)。 我很想能够做这样的事情: 从子流程导入 c...
我不明白为什么这段代码不起作用: testdf <- data.frame(a=c("Hello", "Hi", "Howy")) varname <- "a" testdf %>% 变异(b=nchar({{varname}...
更改 Android 启动器图标,如 Instagram/Todoist
在 Instagram 周年纪念日,用户可以更改应用程序图标。尽管此功能不再可用,但 Todoist 对此功能有类似的工作实现。 我研究过...
我想做2D动态ArrayList示例: [1][2][3] [4][5][6] [7][8][9] 我使用了这段代码: ArrayList> group = new ArrayList>(); 格...
我正在尝试使用 JS 动态调整标题的粘性定位。我怎样才能实现这个目标?
这是我的第一个个人项目,我在使用 JS 动态更改标题上的粘性定位时遇到问题。我想做的就是去掉我在头上设置的粘性定位
我希望能够选择一个用户,然后将每月和每年的后续指标填充在显示的日历中。 我测量的是问题 1、2 和 3 的答案...
我有一个具有不同名称的实体框架 6.0 数据库第一个上下文的列表。它们都包含一个名为“bill”的表。我需要检查每个数据库的账单表,并添加信息...