<sx:submit targets =“div2”>在struts 2中不起作用</sx:submit>

时间:2011-06-30 05:59:34

标签: javascript html struts2

我正在使用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

2 个答案:

答案 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文件出现问题。我下载了最新版本并尝试过。现在工作正常。