我正在使用struts 2框架工作ajax。 应用程序有两个文本框“name”和“age”。 在提交时,应使用同一页面上的div标签更新这两个值。
<sx:div id="div2" executeScripts="true" theme="ajax">Value</sx:div>
<sx:submit targets="div2" value="submit">
当我在sx:submit中使用“targets”属性时,得到一些异常。当我删除“目标”时没有抛出异常。但是应用程序需要“targets”属性来更新div标签。我需要处理任何异常吗? 我正在尝试这个示例,我的应用程序需要这种功能。 帮我。
源代码如下:
<%@taglib uri="/struts-tags" prefix="s" %>
<%@taglib uri="/struts-dojo-tags" prefix="sx" %>
<html>
<head><title>Ajax_Div_Tag_Example</title>
</head>
<body><h1>Ajax_Div_Tag_Example</h1><hr>
<sx:div id="div2" executeScripts="true" theme="ajax">Value</sx:div>
<s:form action="resultAction">
<s:textfield name="name" label="Name"></s:textfield>
<s:textfield name="age" label="Age"></s:textfield>
<sx:submit value="submit" targets="div2"> </sx:submit>
</s:form>
</body>
</html>
struts.xml
<action name="resultAction" class="ActionClasses.AjaxDivAction">
<result name="success">/resultPage.jsp</result>
</action>
resultPage.jsp
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head><title>Ajax_Div_Tag_Example</title>
</head>
<body><hr>Name : <s:property value="name"/><br>
Age : <s:property value="age"/><hr>
</body>
</html>
AjaxDivAction.java
package ActionClasses;
import com.opensymphony.xwork2.ActionSupport;
public class AjaxDivAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
抛出的异常见下面
org.apache.jasper.JasperException: An exception occurred processing JSP page /AjaxDemo.jsp at line 21
18:
19: <s:textfield name="age" label="Age"></s:textfield>
20:
21: <sx:submit value="submit" targets="div2"> </sx:submit>
22:
23: </s:form>
24:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
root cause
javax.servlet.ServletException: java.lang.AbstractMethodError
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
org.apache.jsp.AjaxDemo_jsp._jspService(AjaxDemo_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
root cause
java.lang.AbstractMethodError
org.apache.struts2.components.ClosingUIBean.start(ClosingUIBean.java:65)
org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:53)
org.apache.jsp.AjaxDemo_jsp._jspx_meth_sx_005fsubmit_005f0(AjaxDemo_jsp.java:242)
org.apache.jsp.AjaxDemo_jsp._jspx_meth_s_005fform_005f0(AjaxDemo_jsp.java:168)
org.apache.jsp.AjaxDemo_jsp._jspService(AjaxDemo_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.
由于
Jagan
答案 0 :(得分:0)
首先,不推荐使用struts2 ajax标签,我将回到此处。
看起来不太长,你错过了sx:head标签...请参阅:http://struts.apache.org/2.2.1.1/docs/tag-reference.html这是sx:head标签,它插入了大部分所需的JavaScript。在那之后你会更接近。
回到被弃用的taglib ......简单地说任何ajax标签库都很脆弱。简单的事情很简单,任何事情都不可能完成。如果你在jQuery等JS库中投入一些时间,你会有更大的灵活性,使用struts2-json-plugin是非常简单的。您的UI问题的受众将会受到几个因素的影响,因为您的受众不需要了解有关struts2甚至Java的任何信息。
答案 1 :(得分:0)
strut2-core-2.jar文件出现问题。我下载了最新版本并尝试过。现在工作正常。