Struts2 Push Tag 引发的问题

2019-03-25 13:34|来源: 网路

按照Struts官网上的CRUD例子,自己实践了一下,结果报错:
tag 'push', field 'value': You must specify a value to push on the stack.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /register.jsp at line 16

13: </head>
14: <body>
15: <s:form action="saveOrUpdateUser">
16:     <s:push value="user">
17:         <s:hidden name="id" />
18:         <s:textfield name="name" label="User Name" />
19:         <s:radio name="gender" label="Gender" list="{'Male','Female'}" />


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    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.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:73)


root cause 

tag 'push', field 'value': You must specify a value to push on the stack. Example: person - [unknown location]
    org.apache.struts2.components.Component.fieldError(Component.java:230)
    org.apache.struts2.components.Component.findValue(Component.java:351)
    org.apache.struts2.components.Push.start(Push.java:128)
    org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:53)
    org.apache.jsp.register_jsp._jspx_meth_s_005fpush_005f0(register_jsp.java:209)
    org.apache.jsp.register_jsp._jspx_meth_s_005fform_005f0(register_jsp.java:179)
    org.apache.jsp.register_jsp._jspService(register_jsp.java:120)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)



错误页面部分代码:
<s:form action="saveOrUpdateUser">
    <s:push value="user">
        <s:hidden name="id" />
        <s:textfield name="name" label="User Name" />
        <s:radio name="gender" label="Gender" list="{'Male','Female'}" />
        <s:select name="country" list="{'India','USA','UK'}" headerKey=""
            headerValue="Select" label="Select a country" />
        <s:textarea name="aboutYou" label="About You" />
        <s:checkbox name="mailingList"
            label="Would you like to join our mailing list?" />
        <s:submit />
    </s:push>
</s:form>


Action部分的代码:
private User user = new User();
    private List<User> userList = new ArrayList<User>();
    private UserDAO userDAO = new UserDAOImpl();
    
    public void setUser(User user) {
        this.user = user;
    }
    
    public User getUser() {
        return user;
    }


"user" 已声明且已有 set/get 方法

User类:
package com.vaannila.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="USERDEMO")
public class User {

    private Long id;
    private String name;
    private String gender;
    private String country;
    private String aboutYou;
    private Boolean mailingList;
    
    @Id
    @GeneratedValue
    @Column(name="ID")    
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    
    @Column(name="NAME")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    @Column(name="GENDER")
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    
    @Column(name="COUNTRY")
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    
    @Column(name="ABOUTYOU")
    public String getAboutYou() {
        return aboutYou;
    }
    public void setAboutYou(String aboutYou) {
        this.aboutYou = aboutYou;
    }
    
    @Column(name="MAILINGLIST")
    public Boolean getMailingList() {
        return mailingList;
    }
    public void setMailingList(Boolean mailingList) {
        this.mailingList = mailingList;
    }

}


自己检查好几遍不知道错误出在哪里,请明白人指点。

问题补充:问题已解决!

相关问答

更多
  • 没关系! 我正在使用scriptlet标签和javascript。 我确信这不是最好的方法。 但它的工作原理! <%@ page language="java" import="aPackage.*"%> ... <% aObject obj = new aObject(); %> localStorage.setItem("aVar","<%= obj.getAVariable() %>"); ... // anything else you want to do with the item now i ...
  • 这是应该如何工作。我想你有一个对象的ArrayList ,这个对象有两个属性name和prefix 所以在你的动作类中你有一个类似的ArryList List languageList; 这是从DB填充的。 您需要在JSP中拥有以下条目 其中prefix和n ...
  • 错误清楚地表明了这一点 这通常是由于使用没有关联过滤器的Struts标记引起的 这意味着你内部有一个JSP和struts标签,但过滤器不使用这个JSP,因为它可能是一个欢迎文件,即index.jsp ,错误代码文件,即404.jsp ,在web.xml配置web.xml 。 在涉及映射到资源的任何过滤器或servlet之前,Web服务器将处理这些资源。 通常,欢迎文件包含重定向代码到有效操作,然后调度到可以具有struts标记的JSP。 不要在应用程序中直接使用JSP,而是使用操作。 The error c ...
  • 谢谢你的回复。 我得到的解决方案实际上是使用struts2.3.4 。 我google了,有人说这可能是因为依赖(即库/ jar),应该使用相同版本的struts2.3.4,xwork-core2.3.4和struts2.json-plugin2.3.4。 但之前我使用struts2.json-plugin2.1.8现在我将它替换为struts2.json-plugin2.3.4现在它工作正常。 Thanks for your replies. I got solution actually am usin ...
  • 在回顾一些现有代码时,这个老问题本周对我也很重要。 除了tbruyelle的回答 ,这对我来说是最有用的参考: http://bodez.wordpress.com/2009/03/13/customising-struts2-jsp-tags/ 总之(1) , 扩展现有标记(例如, org.apache.struts2.views.jsp.ui.TextFieldTag ) 扩展其行为(例如, org.apache.struts2.components.TextField ) 定义新主题和模板(例如,从/ ...
  • 在渲染期间访问变量时使用Push。 在你的情况下,你将文本字段中的值设置为空,因为这是你在推送中所做的一切,很明显推送标签没有做任何有用的事情。 我认为你可能想要的是“推动”学生的观点,这相当于追加“学生”。 对所有变量。 这不是推送标签所做的,虽然我必须承认这样的标签会很有用,并且可能节省很多打字。 我们可以看到动作的目标实现了模型驱动(并且模型是学生),这有效地将学生推到了堆栈顶部,所以只需删除推送标签就可以了。 以下是建议: 你的动作有一个get / set学生......如果它实现了ModelDri ...
  • 正如Walid所说,我应该在你的动作类中有一个getTypes()方法,而不是直接使用值栈。 所以我改变了我的代码: List types ; public List getTypes() { return types; } types = dailyNewsService.getAllTypes(); 为了获得成功,请实现Preparable Interface并在其中加载“静态”数据: @Override public void prepare() thro ...
  • 在onclick事件上调用一个javascript方法。 Inside方法读取所有值,然后将所有这些值发送到服务器。 您也可以使用普通表单或Ajax来完成。 I found a solution for my question. In this I generate id dynamically for input in each row of a column, mean while the anchor tag also generated with this element id respective ...
  • 您可以使用list属性 您可以在Struts docs站点上阅读有关select tag更多信息。 You can use list attribute
    在Struts 2中没有相同的东西你应该使用普通的HTML img标签,但是在url标签的帮助下。 Test There isn't equivalent in Struts 2 you should use ordinary HTML img tag but with the help of url tag.