Apache Struts 2是一个基于servlet的可扩展框架,在其架构中实现了模型 - 视图 - 控制器(MVC)模式,用于创建企业级Java Web应用程序。
在 Struts 2 中没有为操作 <class> 和结果“输入”定义结果
这是我的struts.xml: 这是我的struts.xml: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result type="json" /> </action> </package> 当我打电话给loadcity.action时,我收到以下错误 没有为操作 Roseindia.action.user.RegisterUser 和结果输入定义结果 这是我的行动方法: public String loadcity() { country=request.getParameter("country"); cityList= dao.loadcity(country); return ActionSupport.SUCCESS; } 首先,您的 srtuts.xml 文件并未完全定义应该在操作执行的响应上呈现的结果类型。result 标签在 Struts2 MVC 框架中扮演着视图的角色。操作负责执行业务逻辑。执行业务逻辑后的下一步是使用标签显示视图。 在这里你可以做一件事 <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 如果您的操作有错误,INPUT结果将由workflow拦截器返回。在执行您的操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个 validation 拦截器。 您应该将 INPUT 结果添加到操作配置中。如果您发出 Ajax 请求并期望 JSON 响应,那么您可以返回 INPUT 类型的 "json" 结果,您可以在其中添加错误和消息。您还可以调整状态代码。 您的 XML 节点 result 应具有属性 name,其值为 "input",因为这就是您要返回的内容。 所以你的 struts.xml 应该是这样的: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 编辑: 另一个错误可能是: 您收到验证或类型转换异常,因此看起来 对于“输入”结果。 修复验证/类型转换异常。 来源:struts 2 json插件抛出错误,未定义结果类型
这是我的struts.xml: 这是我的struts.xml: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result type="json" /> </action> </package> 当我打电话给loadcity.action时,我收到以下错误 没有为操作 Roseindia.action.user.RegisterUser 和结果输入定义结果 这是我的行动方法: public String loadcity() { country=request.getParameter("country"); cityList= dao.loadcity(country); return ActionSupport.SUCCESS; } 首先,您的 srtuts.xml 文件并未完全定义应在操作执行的响应上呈现的结果类型。result 标签在 Struts2 MVC 框架中扮演视图的角色。操作负责执行业务逻辑。执行业务逻辑后的下一步是使用标签显示视图。 在这里你可以做一件事 <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 如果您的操作有错误,INPUT结果将由workflow拦截器返回。在执行您的操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个 validation 拦截器。 您应该将 INPUT 结果添加到操作配置中。如果您发出 Ajax 请求并期望 JSON 响应,那么您可以返回 INPUT 类型的 "json" 结果,您可以在其中添加错误和消息。您还可以调整状态代码。 您的 XML 节点 result 应具有属性 name,其值为 "input",因为这就是您要返回的内容。 所以你的 struts.xml 应该是这样的: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 编辑: 另一个错误可能是: 您收到验证或类型转换异常,因此看起来 对于“输入”结果。 修复验证/类型转换异常。 来源:struts 2 json插件抛出错误,未定义结果类型
为什么 SessionAware 在 Struts 2 中注入 SessionMap 而不是 HttpSession?
我已经使用 Struts 2 很长时间了。 如果为我们的操作类实现 SessionAware 接口,我们将获得 SessionMap,但不是 HttpSession 对象。 如果是 ServletRequestA...
我正在尝试修复此代码,使用 Struts 2 上传图像文件。 当我调试时,我在我的动作类中验证,我的变量描述符,描述符内容类型和描述符文件名都是comi...
为什么 <distplay:table> 标签导出链接出现在 Struts 2 的顶部?
我在 JSP 中使用 标签来显示数据列表。 这是我的 JSP 代码: 我在 JSP 中使用 <display:table> 标签来显示数据列表。 这是我的JSP代码: <display:table name="Clients" class="table table-condensed table-hover" requestURI="" id="ClientList" export="true" pagesize="5"> <display:column property="clientKey" sortable="true" href="editMClient" media="html" paramId="clientKey" paramProperty="clientKey" titleKey="mClient.clientKey"/> <display:column property="clientKey" media="csv excel xml pdf" titleKey="mClient.clientKey"/> <display:column property="MClientcol" sortable="true" titleKey="mClient.MClientcol"/> <display:column property="clientName" sortable="true" titleKey="mClient.clientName"/> <%--Many columns --%> </display:table> 我想在表格顶部显示要设置的导出选项,而不是在底部。 我签入了显示标签库 - 配置,但它有一个选项可以将分页横幅设置在顶部、底部或两者上。我没有找到相同的出口。 是否有任何选项可以设置它,以便我可以在displaytag.properties文件中指定。 此外,每页显示的行数,我设置为5。像jqGrid一样,有什么方法可以动态改变它吗? div有类exportlinks,您应该通过CSS技术覆盖它。在这种情况下,您可以自定义栏的外观。 <div class="exportlinks"> Export options: {0} </div> 要动态更改 pagesize,您需要自定义横幅并将 select 放置在那里,然后 onchange 事件应该处理更改 pagesize="<s:property value="pagesize"/>" 通过提交选择中的值或在 GET 请求中发送。 通过操作更改值后,只需保持返回或刷新页面即可使更改生效。 有关displaytag的更多信息,您可以在此处找到。
distplay:表标签导出链接出现在 Struts 2 的顶部
我在 JSP 中使用 标签来显示数据列表。 这是我的 JSP 代码: 我在 JSP 中使用 <display:table> 标签来显示数据列表。 这是我的JSP代码: <display:table name="Clients" class="table table-condensed table-hover" requestURI="" id="ClientList" export="true" pagesize="5"> <display:column property="clientKey" sortable="true" href="editMClient" media="html" paramId="clientKey" paramProperty="clientKey" titleKey="mClient.clientKey"/> <display:column property="clientKey" media="csv excel xml pdf" titleKey="mClient.clientKey"/> <display:column property="MClientcol" sortable="true" titleKey="mClient.MClientcol"/> <display:column property="clientName" sortable="true" titleKey="mClient.clientName"/> <%--Many columns --%> </display:table> 我想在表格顶部显示要设置的导出选项,而不是在底部。 我签入了显示标签库 - 配置,但它有一个选项可以将分页横幅设置在顶部、底部或两者上。我没有找到相同的出口。 是否有任何选项可以设置它,以便我可以在displaytag.properties文件中指定。 此外,每页显示的行数,我设置为5。像jqGrid一样,有什么方法可以动态改变它吗? div有类exportlinks,您应该通过CSS技术覆盖它。在这种情况下,您可以自定义栏的外观。 要动态更改 pagesize,您需要自定义横幅并将 select 放置在那里,然后 onchange 事件应通过提交来自 select 的值或在 GET 请求中发送值来处理更改 pagesize="<s:property value="pagesize"/>"。通过操作更改值后,只需保持返回或刷新页面即可使更改生效。
在哪里放置 struts.xml 文件以避免在 Struts 2 中出现“No action returned”错误?
我意识到,这个问题已经被问过很多次了,但这些问题大多是由于将 struts.xml 文件放在不正确的位置,或者路径名拼写错误,或者某些......
如何在 Struts 2 中拥有一个包含对象 id 的 URL,然后将其传递给一个操作以通过该 id 显示该对象? 例如。 URL 是 /users/1,它显示了一个用户对象,其中有 t...
如何访问 Struts 2 中不在 ValueStack 上的另一个操作的属性?
我有两个 JSP 页面,显示来自两个不同操作的两个列表:页面 A 显示员工列表,页面 B 显示部门列表。 两个页面都有一个公共文本字段(包含在第三个 JSP 中......
如何在 Jive 中从 FTL 设置 Java bean 的值?
我是 Jive 和 Freemarker 的新手。 我尝试了以下方法,就像我们在 Struts 中所做的那样: 我是 Jive 和 Freemarker 的新手。 我尝试了以下方法,就像我们在 Struts 中所做的那样: <input size=40 name="bvProperties.fileBasedQueueLocation" type="text" value="${badgeVilleProperties.fileBasedQueueLocation!''}" style="float: right;"/> 需要将 fileBasedQueueLocation 变量的值设置为 bvProperties bean,该值在操作中可用。 我还创建了一个 setter,以及 bvProperties 的 getter 方法。 您应该尝试的语法: <input size=40 name="bvProperties.fileBasedQueueLocation" type="text" value="${(badgeVilleProperties.fileBasedQueueLocation)!}" style="float: right;"/>
我必须将哪些 jar 文件放入 lib 文件夹中才能使这些导入语句起作用?
我正在学习 Struts2 教程。它告诉我导入列出的类。但它没有告诉我哪些jar文件应该放在WEB-INF文件夹下的lib文件夹中。 这些是导入声明...
我应该在身份验证后分配唯一的JSESSIONID。 身份验证之前和身份验证之后的 JSESSIONID 应始终不同。 那么,我如何使用 Struts 2 来做到这一点?
我正在使用 Apache Tomcat Web 服务器使用 Struts 2 框架开发 Web 应用程序,并且 log4j 遇到一些问题。 首先,这是我的 log4j.properties 文件: log4j.rootLogger=错误,L,标准输出 ...
Struts 2中如何通过id而不是property从JSP获取数据到Action类?
我正在Java Struts 2框架上做。 通常,我可以通过 Form.java(动作类)中的 get set 方法从 JSP 获取数据。下面是我的例子: 在 main.jsp 文件中: 我正在Java Struts 2框架上做。 通常,我可以通过Form.java(动作类)中的get set方法从我的JSP获取数据。下面是我的例子: 在 main.jsp 文件中: <html:text property="campaignName" size="50" maxlength="50" /> 因此,我可以通过action类中的getter和setter方法获取这个文本框名称,以下是代码来自 mainForm.java: private String campaignName = null; public String getCampaignName() { return campaignName; } public void setCampaignName(String campaignName) { this.campaignName = campaignName; } 但是,因为我想使用 jQuery 来做一些事情,所以我不再使用 <html:text> 作为文本框,而是使用 <input type="text" id="datepicker" />。 由于此文本框中没有 property 属性,因此我无法从此文本框中获取值。我也尝试在文本框中添加property="something",但是mainForm.java中的get set方法返回null。 我想问一下,如何获取这个文本框的值? <s:textfield name="campaignName" size="50" maxlength="50" /> 或 <input type="text" name="campaignName" size="50" maxlength="50" /> 名称需要与字段名称匹配 该文本框的简单用法是使用 s:textfield 标签。 <s:textfield name="campaignName" size="50" maxlength="50" /> 您可以使用<s:textfield name="campaignName" size="50" maxlength="50" />并将struts标签添加到您的jsp中(在顶部): <%@ taglib prefix="s" uri="/struts-tags"%>
我正在尝试使用 getJSON() jQuery 方法从 Java 服务器获取响应文本。虽然,当 Java 类具有简单格式(字符串、列表和映射)时,我可以获取响应数据,但我无法获取
如果不同的employeeID没有选中复选框,当用户单击提交按钮时如何显示弹出对话框或显示错误消息?我该怎么做? 下面是Employee.jsp的部分...
如何将 JSP 变量转换为 Struts 2 变量? 我尝试过以下方法: <%=scoredDocument%> 如何将 JSP 变量转换为 Struts 2 变量? 我尝试过以下方法: <%=scoredDocument%> <s:push value="scoredDocument"/> <s:push value="#scoredDocument"/> <s:push value="%{scoredDocument}"/> <s:push value="${scoredDocument}"/> <s:push value="#page.scoredDocument"/> <s:push value="%{#page.scoredDocument}"/> <display:column title="Study Code" sortable="true"> <s:property value="id"/> 最常见的错误是 原因:标签'push',字段'value':您必须指定一个值来压入堆栈。示例:人 - [未知位置] <s:push> 必须包含 <s:property> 标签。还有 <s:push value="#attr.scoredDocument"> <display:column title="Study Code" sortable="true"> <s:property value="id"/> </display:column> </s:push> #attr?什么是Struts?甚至没有记录! https://struts.apache.org/release/2.0.x/docs/jsp.html push标签需要value属性并且必须对其进行初始化,否则会显示JSP错误。与其他可以用空字符串预初始化值的标记不同,JSP 不会抱怨。 OGNL 表达式在此属性中进行计算,就像在 Struts 标签的许多其他属性中一样,如果无法解析该值,则返回 null。该值对于 push 标记来说是不可接受的,并且会引发异常。该错误会导致尝试通过 OGNL 表达式访问 scriptlet 变量值,但不幸的是,这些方法都不起作用。 Scriptlet 表达式与 Struts 标签一起使用时有一个陷阱,您只能在标签正文中使用它,并且它会转换为字符串。就像这个例子 <s:set var="scoredDocument"><%=scoredDocument%></s:set> 您不能对 push 标签执行相同操作。之后,您可以在 OGNL 表达式中使用 #scoredDocument 的字符串化版本。
我在下面的代码中遇到问题 我在下面的代码中遇到问题 <s:form action="updateBankInfo.action" enctype="multipart/form-data" method="post" theme="simple"> <s:actionerror /> <div style="font-family:Times New Roman;font-size:30px; padding-left: 250px;">Bank Info</div> <div> <div class="label"><s:text name="Payee Name* :"/></div> <div class="input"><s:textfield value="%{#session.payeeName}" name="bean.payeeName" readonly="false" /></div> <div><s:fielderror fieldName="bean.payeeName"/></div> </div> <div> <div class="label"><s:text name="Bank* :"/></div> <div class="input"><s:textfield value="%{#session.bankName}" name="bean.bankName" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankName"/></div> </div> <div> <div class="label"><s:text name="Branch* :"/></div> <div class="input"><s:textfield value="%{#session.bankBranch}" name="bean.bankBranch" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankBranch"/></div> </div> <div> <div class="label"><s:text name="City* :"/></div> <div class="input"><s:textfield value="%{#session.city}" name="bean.city" readonly="false" /></div> <div><s:fielderror fieldName="bean.city"/></div> </div> <div> <div class="label"><s:text name="A/C No*:"/></div> <div class="input"><s:textfield value="%{#session.accountNo}" name="bean.accountNo" readonly="false" /></div> <div><s:fielderror fieldName="bean.accountNo"/></div> </div> <div> <div class="label"><s:text name="IFSC Code :"/></div> <div class="input"><s:textfield value="%{#session.IFSCCode}" name="bean.IFSECode" readonly="false" /></div> <div><s:fielderror fieldName="bean.IFSECode"/></div> </div> <button type="submit" style="width:107px;height:34px;margin-top:100px;margin-left:10px;font-size:1.67em;background-color:#d9d9d9;clear: left;" onclick="form.submit()"><s:text name="Update"/></button> </s:form> 在这一切中,我从数据库中获取并存储在会话中的值。第一次 bankName 不会包含任何值,并且我使用了验证器方法来进行验证,所以如果我为 bankname 提供值并单击提交。因为我已经给出了 bankName,所以我无法保留 value="%{#session.bankName}" 值,因为 bankName 不包含任何值。如何取回值? 创建 bean 实例和 getter/setter,即 private Bean bean = new Bean(); public Bean getBean() { return bean; } public void setBean(Bean bean){ this.bean = bean; } 要保留你应该的价值观 Map session = ActionContext.getContext().getSession(); session.put("bankName", bean.getBankName()); // the same put for the others. 参见简单示例中会话的使用。
我在下面的代码中遇到问题 我在下面的代码中遇到问题 <s:form action="updateBankInfo.action" enctype="multipart/form-data" method="post" theme="simple"> <s:actionerror /> <div style="font-family:Times New Roman;font-size:30px; padding-left: 250px;">Bank Info</div> <div> <div class="label"><s:text name="Payee Name* :"/></div> <div class="input"><s:textfield value="%{#session.payeeName}" name="bean.payeeName" readonly="false" /></div> <div><s:fielderror fieldName="bean.payeeName"/></div> </div> <div> <div class="label"><s:text name="Bank* :"/></div> <div class="input"><s:textfield value="%{#session.bankName}" name="bean.bankName" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankName"/></div> </div> <div> <div class="label"><s:text name="Branch* :"/></div> <div class="input"><s:textfield value="%{#session.bankBranch}" name="bean.bankBranch" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankBranch"/></div> </div> <div> <div class="label"><s:text name="City* :"/></div> <div class="input"><s:textfield value="%{#session.city}" name="bean.city" readonly="false" /></div> <div><s:fielderror fieldName="bean.city"/></div> </div> <div> <div class="label"><s:text name="A/C No*:"/></div> <div class="input"><s:textfield value="%{#session.accountNo}" name="bean.accountNo" readonly="false" /></div> <div><s:fielderror fieldName="bean.accountNo"/></div> </div> <div> <div class="label"><s:text name="IFSC Code :"/></div> <div class="input"><s:textfield value="%{#session.IFSCCode}" name="bean.IFSECode" readonly="false" /></div> <div><s:fielderror fieldName="bean.IFSECode"/></div> </div> <button type="submit" style="width:107px;height:34px;margin-top:100px;margin-left:10px;font-size:1.67em;background-color:#d9d9d9;clear: left;" onclick="form.submit()"><s:text name="Update"/></button> </s:form> 在这一切中,我从数据库中获取并存储在会话中的值。第一次 bankName 不会包含任何值,并且我使用了验证器方法来进行验证,所以如果我为 bankname 提供值并单击提交。因为我已经给出了 bankName,所以我无法保留 value="%{#session.bankName}" 值,因为 bankName 不包含任何值。如何取回值? 创建 bean 实例和 getter/setter,即 private Bean bean = new Bean(); public Bean getBean() { return bean; } public void setBean(Bean bean){ this.bean = bean; } 要保留你应该的价值观 Map session = ActionContext.getContext().getSession(); session.put("bankName", bean.getBankName()); // the same put for the others. 参见简单示例中会话的使用。
如何在Struts 2中制作具有两个条件的<s:if>标签?
我遍历一个项目列表,如果元素的状态等于学生或教师,则需要显示特定的下拉列表。下面的代码显示了所有字段,但没有显示dropd...