struts2 相关问题

Apache Struts 2是一个基于servlet的可扩展框架,在其架构中实现了模型 - 视图 - 控制器(MVC)模式,用于创建企业级Java Web应用程序。

<bean:message> 标签

我正在尝试使用 bean 来显示预定义消息,我已经创建了以下文件,但是当我输入 时,它遇到了以下错误 我正在尝试使用 bean 来显示预定义消息,我创建了以下文件,但是当我输入 <me 时,它遇到以下错误,自动代码生成器不显示 <message - resources> 标签! org.apache.jasper.JasperException:找不到 Struts 调度程序。 这通常是由于使用 Struts 标签而没有关联的过滤器造成的。 Struts 标签仅在请求通过其 servlet 过滤器时才可用,该过滤器会初始化该标签所需的 Struts 调度程序。 - [未知位置] 注意: 异常的完整堆栈跟踪及其根本原因可在 GlassFish Server 开源版 3.1.2.2 日志中找到。 struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts-config> <!-- Configuration for the default package. --> <message-resources parameter="com/myapp/struts/messages"/> <package name="default" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> </result-types> <action name="register"> <result type="tiles">register</result> </action> </package> </struts-config> register.jsp: <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <div id="Header"> <bean:message key="welcome.loggedin"/> </div> messages.properties: # -- welcome -- welcome.loggedin=You are logged in. welcome.heading=Struts Applications in Netbeans! welcome.message=It's easy to create Struts applications with NetBeans. 我想问题出在我的 jar 文件上 commons-digester-1.8.1.jar commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-lang-2.1.jar commons-logging-1.1.jar displaytag-1.2.jar displaytag-export-poi-1.2.jar displaytag-portlet-1.2.jar freemarker-2.3.13.jar jdom-1.1.jar jstl-1.2.jar junit-3.8.1.jar ognl-2.6.11.jar pagertag.jar sqlite-jdbc-3.7.2.jar struts2-convention-plugin-2.1.6.jar struts2-core-2.1.6.jar struts2-dojo-plugin-2.1.2.jar struts2-tiles-plugin-2.1.6.jar tiles-api-2.1.2.jar tiles-compat-2.1.2.jar tiles-core-2.1.2.jar tiles-jsp-2.1.2.jar tiles-servlet-2.1.2.jar struts-taglib-1.3.10.jar xwork-2.1.2.jar <bean:message key=标签是一个Struts1标签,在Struts2中它被替换为<s:text name=。除非您没有足够的理由运行这两个框架,否则您不应该使用 Struts1 标签。 您正在 Struts 2 应用程序中使用 Struts 1 标签。不。 Struts 1 和 Struts 2 是两个完全不同的 Web 框架。 这里是关于 i18n 的 Struts2 文档页面。

回答 2 投票 0

如何使用 <s:select> 标签显示 Map 中的键并将值返回到 Struts 2 中的操作?

我有一个带有键值对的映射。我想在下拉列表中显示键,以及要发送到服务器以识别所选内容的值。 我正在使用 Struts 2。我尝试将地图放入 我有一个带有键值对的Map。我想在下拉列表中显示键,以及要发送到服务器以识别所选内容的值。 我正在使用 Struts 2。我尝试将 Map 放入 <s:select> 标签的 list 属性中,但它显示了下拉列表中的值。 使用 listKey 标签的 listValue 和 <s:select> 属性从对象列表中获取属性。 为了交换映射中的键和值,请将 value 放入 listKey 并将 key 放入 listValue。 <s:select list="someMap" listKey="value" listValue="key"/> 据您所知,Struts 2 中的下拉菜单可以与 List 或任何其他集合(如 Map)一起使用。它使用 OGNL 检索选项文本和值的值。 与List的区别在于Map是通过entrySet()转换并迭代得到选择选项的Map.Entry元素。 您可以使用此对象为下拉列表映射 key 和 value。它有 getKey() 和 getValue() 方法,对于 OGNL 填充下拉列表很有用。第一个用于填充 value 属性,如果选择该属性,则将其提交给操作,第二个用于填充选项的文本。 如果您的下拉列表显示值,则说明您映射了错误的值。这些值应映射为 Map 的键,并将文本显示为值。

回答 2 投票 0

返回 Struts 2 中输入结果的当前页面

我的网络应用程序的所有页面上都有一个 。 我的网络应用程序的所有页面上都有一个 <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); } } } 输出: 现在出现错误时停留在当前页面。

回答 3 投票 0

Struts 2 中特定字段的手动验证

例如,我有一个名为 UsersAction 的 Action 类,其中有一些方法,例如:登录、注销、注册等。 我编写了 validate() 方法,如下所示: @覆盖 公共无效值...

回答 2 投票 0

如何从服务器检索图像并将其显示在 Struts 2 的 JSP 页面上?

我有一个 Product 实体,其中有一个 imageUrl 字符串字段。 产品图片从用户处获取后,将保存在目录: System.getProperty("user.home") + "商店/数据/

回答 3 投票 0

如何在Struts 2中使用注解为action定义多个父包?

我正在开发 Struts 2 Web 应用程序,使用 Convention Plugin 通过注释配置所有内容。 我的一些动作类遇到了障碍,我想在其中使用多个父级

回答 2 投票 0

在 Struts 2 中提交表单后,Action 的布尔值不再与 JSP 绑定

从 JSP 中,只有布尔值没有绑定到操作的布尔变量中。其他所有变量都变得绑定良好。 xBudgetFlag 是不具有约束力的布尔变量。 其他所有变量...

回答 1 投票 0

如何通过Struts 2中的配置进行简单的重定向?

我已经在网上搜索了几个小时,但在 Struts 中找不到一个简单问题的答案。基本上,我在 Struts 1 中有以下操作,这是一个简单的转发,我想重现...

回答 1 投票 0

Struts 2 中的下一个请求是否应该启动相同的操作实例?

我像下面一样加载对象 userData,以在 JSP 上显示它。 (稍后将从数据库加载)使用 Register() 方法类型 GET。 接下来,我在 JSP 上填写 userData 的另一个字段,然后单击“注册”。 然后

回答 1 投票 0

我应该怎么做才能在 Struts 2 中的下一个请求上启动相同的操作实例?

我加载对象 userData 如下所示,以在 JSP 上显示它。 (稍后将从数据库加载)使用 Register() 方法类型 GET。 接下来,我在 JSP 上填写 userData 的另一个字段,然后单击“注册”。 然后

回答 1 投票 0

如何在 JSP 上查看数据库中的数据,而无需在 Struts 2 中使用 scriptlet 或 Java 代码?

我正在尝试在JSP上查看数据库中的数据,所以现在我想出了在JSP中不使用alscriptlet或Java代码的想法。我学习了 modelDriven 拦截器和其他一些拦截器...

回答 2 投票 0

Struts 2中如何在每个页面的标题上显示用户名?

我在我的应用程序中使用了拦截器进行身份验证。我已将其添加到defaultStackHibernate 中。它工作正常并且我得到了想要的结果,唯一的问题是现在,我...

回答 2 投票 0

ValueStack 中存储了哪些对象以及如何检索这些对象?

这是我下面的代码,当它执行时,它显示大小为3,但是当我弹出对象时,我只得到2个对象。 导入 java.util.*; 导入 com.opensymphony.xwork2.util.ValueStack; 我...

回答 2 投票 0

Struts 2 中如何将 Action 类变量值传递给另一个 Action 类?

Struts 2 中如何将 Action 类变量值传递给另一个 Action 类? 我想在另一个操作类中使用该变量值进行查询。

回答 3 投票 0


为什么对 Spring MVC 控制器的请求发送到 Struts 调度程序?

我配置了 Struts 2 和 Spring MVC。我的 web.xml 如下所示: 网络.xml: struts2 org.apache.struts2.dispatcher。

回答 2 投票 0

为什么对 Spring MVC 控制器的请求会转到 Struts Dispatcher?

我配置了 Struts 2 和 Spring MVC。我的 web.xml 如下所示: 网络.xml: struts2 org.apache.struts2.dispatcher。

回答 2 投票 0

为什么请求会发送到 Struts Dispatcher?

我配置了 Struts 2 和 Spring MVC。我的 web.xml 如下所示: 网络.xml: struts2 org.apache.struts2.dispatcher。

回答 2 投票 0

如何在Struts 2中使用ServletFileUpload的parseRequest上传文件? [重复]

我上传文件,并在网络应用程序中使用输入类型=“文件”进行浏览。 问题是,我得到的 FileItem 列表大小为 0,尽管我可以在下面看到所有上传的文件信息 请求 ->

回答 4 投票 0

如何使用 Struts 2 中的约定插件设置基础包来扫描子包中的操作?

如何告诉 Struts 2 约定插件扫描包的所有子包?我尝试过这个 ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.