简体   繁体   English

如何在Struts2中采取行动

[英]how to action fire in Struts2

This is My JSP Page . 这是我的JSP页面。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<style type="text/css">
b {
    color: navy;
    background-color: orange;
}
</style>
<title>Struts2-Spring-Tiles integration | dineshonjava.com</title>
</head>
<body>

    <h2>Add User</h2>
    <b> <s:form action="addUsermenu">
            <s:textfield name="userName" key="user.name" />
            <s:textfield name="userAge" key="user.age" value="" />
            <s:radio name="userGender" key="user.gender" list="{'Male','Female'}" />
            <s:select name="userJob" key="user.job"
                list="%{#{'Software':'Software','Hardware':'Hardware','Networking':'Networking','Marketing':'Marketing'}}" />
            <s:checkboxlist name="userHobbies" key="user.hobby"
                list="{'Cricket','Football','Drawing','Cooking','Driving','Movie'}" />
            <s:submit key="submit" align="center" />

        </s:form> </b>
    <s:if test="%{users.isEmpty()}">
    </s:if>
    <s:else>
        <b>List of Users</b>
        <table border="1">
            <tr>
                <td><b>Name</b></td>
                <td><b>Age</b></td>
                <td><b>Gender</b></td>
                <td><b>Job Type</b></td>
                <td><b>Hobbies</b></td>

            </tr>
            <s:iterator value="users">
                <tr>
                    <td><s:property value="userName" /></td>
                    <td><s:property value="userAge" /></td>
                    <td><s:property value="userGender" /></td>
                    <td><s:property value="userJob" /></td>
                    <td><s:property value="userHobbies" /></td>
                    <td><a href="delete">Delete</a>
                    <td><a href="<s:property value="Update" />">Update</a>
                    </td>
                </tr>
            </s:iterator>
        </table>
    </s:else>
</body>
</html

This is My StrutsConfig.xml: 这是My StrutsConfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources" value="myapp" />

    <package name="user" extends="struts-default" namespace="/">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
       </result-types>
        <action name="user" class="user" method="execute">
            <result name="user" type="tiles">mainTemplate</result>
        </action>
        <action name="*menu" class="user" method="{1}">
            <result name="user" type="tiles">mainTemplate</result>
            <result name="madhuri" type="tiles">madhuri</result>
            <result name="alia" type="tiles">alia</result>
            <result name="addUser" type="tiles">mainTemplate</result>
            <result name="deleteUser" type="tiles">mainTemplate</result>

        </action>
    </package>
 </struts>

this is my USerAction.jsp: 这是我的USerAction.jsp:

public class UserAction extends ActionSupport implements ModelDriven<UserBean>{

    private static final long serialVersionUID = 1L;

    @Autowired
    private UserBean userBean;
    @Autowired
    private UserService userService;
    private List<UserBean> users;

    public String execute() {
        users = CommonUtility.createUserBeanList(userService.getUserList());
        return "user";
    }

    public String addUser(){
        userService.saveUser(CommonUtility.createModel(userBean));
        users = CommonUtility.createUserBeanList(userService.getUserList());
        return "addUser";
    }

    public String deleteUser(){
        userService.deleteUser(CommonUtility.createModel(userBean));
        users = CommonUtility.createUserBeanList(userService.getUserList());
        return "deleteUser";
    }

    public String listUser(){
        users = CommonUtility.createUserBeanList(userService.getUserList());
        return "users";
    }

    @Override
    public UserBean getModel() {
        return userBean;
    }
    public String alia() { 
        return "alia";
    }
    public String madhuri() { 
        return "madhuri"; 
    }
    public String user() { 
        return "user"; 
    }

    public List<UserBean> getUsers() {
        return users;
    }

    public void setUsers(List<UserBean> users) {
        this.users = users;
    }

}


public String deleteUser(){
        userService.deleteUser(CommonUtility.createModel(userBean));
        users = CommonUtility.createUserBeanList(userService.getUserList());
        return "deleteUser";
    }  

function is not working i am stucking where am doing wrong Please help me i think there is minor mistake so i Could not able to find that Error . 函数无法正常工作我在哪里做错了请帮我,我认为这是一个小错误,因此我无法找到该错误。

The form is submiting an action name as addUsermenu . 表单正在将操作名称addUsermenuaddUsermenu

In your struts.xml, you have an action tag to point to all the methods , that matches *menu. struts.xml,您有一个动作标签来指向与* menu匹配的所有方法 So your addUsermenu will find its corresponding method. 因此,您的addUsermenu将找到其对应的方法。 ie addUser(). 即addUser()。

But in the case of delete you must change the action name to deleteUsermenu inorder to find the function deleteUser() 但是在删除的情况下,必须将操作名称更改为deleteUsermenu才能找到函数deleteUser()

Solution Change the delete Link to this 解决方案将删除链接更改为此

<a href="delete">Delete</a>

to this 对此

<a href="<s:url action='deleteUsermenu'/>">Delete</a>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM