<action parameter="method" />

本文详细介绍了 Struts 框架中的 DispatchAction 机制,包括如何在一个 Action 中处理多个业务请求,通过配置 &lt;action parameter=method&gt; 实现不同方法的调用。还解释了 DispatchAction 的工作原理及如何正确使用。
[align=center][size=xx-large][color=red][b]<action parameter="method"/>[/b][/color][/size][/align]


structs-config.xml里<action parameter="method">



表单: <html:form action="/myTest.do?actions=insert" method="post">.
超链接:<a herf="myTest.do?actions=insert"">do_insert</a>

struts-config.xml里:
<action name="frameTestForm" path="/frameTest" scope="request"
parameter="actions" validate="true">
//最上面的actions就是这个parameter的值,再又DispatchAction调用insert()
......
</action>

这个是Struts的DispatchAction机制,
简单描述:
一个Action通常只能完成一种业务操作,如果你想在一个Action里处理多个业务请求,那么可以使用DispatchAction。
parameter是制定的action类里的方法:
1.一个action有多个方法,然后这里配置<action parameter="your_method">
2.一个action只有一个execute方法,这里就不用配置parameter,默认是execute。

原理:
<action>的parameter属性是给DispatchAction使用的,你的类要继承DispatchAction类,而不是普通的Action,Action只会执行execute方法,DispatchAction会根据parameter的值执行特定的方法,注意parameter的值不要设置为execute,也不要覆盖DispatchAction中的execute(),因为DispatchAction继承于Action,它的execute会首先执行,在execute()方法中取出parameter的值,通过java反射调用指定的方法。
分析代码@extends('layouts.product') @section('style') <style> .iteminfo_freprice { display: inline-block; } .pay span { line-height: 40px; } .pay li, .pay .pay-opt { height: 40px; } .tb-btn a { height: 40px; line-height: 40px; } </style> @endsection @section('main') <div class="listMain"> <!--放大镜--> <div class="item-inform"> <div class="clearfixLeft" id="clearcontent"> <div class="box"> <script type="text/javascript"> $(document).ready(function() { $(".jqzoom").imagezoom(); $("#thumblist li a").click(function() { $(this).parents("li").addClass("tb-selected").siblings().removeClass("tb-selected"); $("#jqzoom").attr('src', $(this).find("img").attr("src")); }); }); </script> <div class="tb-booth tb-pic tb-s310"> <img src="{{ $product->thumb }}" alt="{{ $product->name }}" id="jqzoom" /> </div> <ul class="tb-thumb" id="thumblist"> @foreach ($product->pictures as $key => $image) <li class="{{ $key == 0 ? 'tb-selected' : '' }}"> <div class="tb-pic tb-s40"> <a href="javascript:;"> <img src="{{ assertUrl($image) }}"> </a> </div> </li> @endforeach </ul> </div> <div class="clear"></div> </div> <div class="clearfixRight"> <!--规格属性--> <!--名称--> <div class="tb-detail-hd"> <h1> {{ $product->name }} </h1> </div> <div class="tb-detail-list"> <!--价格--> <div class="tb-detail-price"> <li class="price iteminfo_price"> <dt>促销价</dt> <dd>¥<b class="sys_item_price">{{ $product->price }}</b> </dd> </li> <li class="price iteminfo_mktprice"> <dt>原价</dt> <dd>¥<b class="sys_item_mktprice">{{ $product->original_price }}</b></dd> </li> <div class="clear"></div> </div> @include('hint.fail') @include('hint.validate_errors') @include('hint.status') <div class="clear"></div> <!--销量--> <ul class="tm-ind-panel"> <li class="tm-ind-item tm-ind-sumCount canClick"> <div class="tm-indcon"><span class="tm-label">累计销量</span><span class="tm-count">{{ $product->sale_count }}</span></div> <br> <div class="tm-indcon"><span class="tm-label">总浏览数</span><span class="tm-count">{{ $product->view_count }}</span></div> </li> <li class="tm-ind-item tm-ind-reviewCount canClick tm-line3"> <div title="滑动到下方收藏的用户查看" class="tm-indcon"><span class="tm-label">累计收藏</span><span class="tm-count" id="likes_count">{{ $product->users->count() }}</span></div> </li> </ul> <div class="clear"></div> <!--各种规格--> <dl class="iteminfo_parameter sys_item_specpara"> <dd> <!--操作页面--> <div class="theme-popover-mask"></div> <div class="theme-popover"> <div class="theme-span"></div> <div class="theme-poptit"> <a href="javascript:;" title="关闭" class="close">×</a> </div> <div class="theme-popbod dform"> <form class="theme-signin" name="" action="" method="post"> <div class="theme-signin-left"> <div class="theme-options"> <div class="cart-title number">数量</div> <dd> <input id="min" class="am-btn am-btn-default" type="button" value="-" /> <input id="text_box" name="number" type="text" value="1" style="width:30px;" /> <input id="add" class="am-btn am-btn-default" type="button" value="+" /> <span id="Stock" class="tb-hidden">库存<span class="stock">{{ $product->count }}</span>件</span> </dd> </dl> </div> <div class="clear"></div> <!--按钮 --> <div class="pay"> <div class="pay-opt" style="display: inline-block"> <a href="/"><span class="am-icon-home am-icon-fw">首页</span></a> @auth @if ($product->userIsLike) <a href="javascript:;" id="likes_btn"><span class="am-icon-heart am-icon-fw color-green" >已收藏</span></a> @else <a href="javascript:;" id="likes_btn"><span class="am-icon-heart am-icon-fw color-blue" >收藏</span></a> @endif @endauth @guest <a href="/login"><span class="am-icon-heart am-icon-fw">收藏</span></a> @endguest </div> <ul> <li> <div class="clearfix tb-btn"> @auth <a id="nowBug" href="javascript:;" >立即购买</a> @endauth @guest <a href="/login">立即购买</a> @endguest </div> </li> <li> <div class="clearfix tb-btn tb-btn-basket"> <a title="加入购物车" href="javascript:;" id="addCar"><i></i>加入购物车</a> </div> </li> </ul> <div class="clear"></div> </div> <input type="hidden" name="product_id" value="{{ $product->uuid }}"> </div> </form> </div> </div> <div class="clear"></div> <!-- introduce--> <div class="introduce"> <div class="browse"> <div class="mc"> <ul> <div class="mt"> <h2>推荐</h2> </div> @foreach ($recommendProducts as $recommendProduct) <li class="first"> <div class="p-img"> <a href="/products/{{ $recommendProduct->uuid }}"> <img class="media-object" src="{{ $recommendProduct->thumb }}" alt="{{ $recommendProduct->name }}" width="80"> </a> </div> <div class="p-name"><a href="/products/{{ $recommendProduct->uuid }}"> {{ $recommendProduct->name }} </a> </div> <div class="p-price"><strong> ¥ {{ $recommendProduct->price }} </strong></div> </li> @endforeach </ul> </div> </div> <div class="introduceMain"> <div class="am-tabs" data-am-tabs> <ul class="am-avg-sm-3 am-tabs-nav am-nav am-nav-tabs"> <li class="am-active"> <a href="#"><span class="index-needs-dt-txt">商品评论</span></a> </li> <li> <a href="#"><span class="index-needs-dt-txt">宝贝详情</span></a> </li> <li> <a href="#"><span class="index-needs-dt-txt">收藏的用户</span></a> </li> </ul> <div class="am-tabs-bd"> <div class="am-tab-panel am-fade am-in am-active"> <div class="posted-review panel p-30"> <h3 class="h-title">{{ $product->comments->count() }} 评论</h3> @foreach ($product->comments as $comment) <div class="review-single pt-30"> <div class="media"> <div class="media-left"> <img class="media-object mr-10 radius-4" src="{{ $comment->user->avatar }}" width="90" alt=""> </div> <div class="media-body"> <div class="review-wrapper clearfix"> <ul class="list-inline"> <li> <span class="review-holder-name h5">{{ $comment->user->name }}</span> </li> <li> <div class="rating"> <span class="rating-stars" data-rating="5"> {!! str_repeat('<i class="fa fa-star-o"></i>', 5 - $comment->score) !!} {!! str_repeat('<i class="fa fa-star-o star-active"></i>', $comment->score) !!} </span> </div> </li> </ul> <p class="review-date mb-5">{{ $comment->created_at }}</p> <p class="copy">{{ $comment->content }}</p> </div> </div> </div> </div> @endforeach </div> <div class="clear"></div> </div> <div class="am-tab-panel am-fade"> <div class="details"> <div class="attr-list-hd after-market-hd"> <h4>商品细节</h4> </div> <div class="twlistNews"> {!! $product->detail->content !!} </div> </div> <div class="clear"></div> </div> <div class="am-tab-panel am-fade"> <ul class="am-comments-list am-comments-list-flip"> @foreach ($product->users as $user) <li class="am-comment"> <a href=""> <img class="am-comment-avatar" src="{{ $user->avatar }}" alt="{{ $user->name }}" /> </a> <div class="am-comment-main"> <header class="am-comment-hd"> <div class="am-comment-meta"> <a href="#" class="am-comment-author">{{ $user->name }}</a> </div> </header> <!-- 评论内容 --> </div> </li> @endforeach </ul> <div class="clear"></div> <div class="tb-reviewsft"> <div class="tb-rate-alert type-attention">购买前请查看该商品的 <a href="#" target="_blank">购物保障</a>,明确您的售后保障权益。</div> </div> </div> </div> </div> <div class="clear"></div> <div class="footer"> <div class="footer-hd"> <p> <a href="#">星期一商城</a> <b>|</b> <a href="#">商城首页</a> <b>|</b> <a href="#">支付宝</a> <b>|</b> <a href="#">物流</a> </p> </div> @include('modules.home.footer') </div> </div> </div> <form id="pay_form" action="/user/pay/store" method="post"> {{ csrf_field() }} </form> @endsection @section('script') <script src="/assets/user/layer/2.4/layer.js"></script> <script src="/js/jquery-addShopping.js"></script> <script> let product_id = $('input[name=product_id]').val(); let _url = "/user/likes/" + product_id; let token = "{{ csrf_token() }}"; let likes_nums = $('#likes_count'); // 收藏 $('#likes_btn').click(function(){ let that = $(this); $.post(_url, {_token:token, _method: 'PUT'}, function(res){ layer.msg(res.msg); if (res.code == 301) { return; } // 收藏成功 if (res.code == 201) { that.find('span').text('已收藏'); that.find('span').removeClass('color-blue').addClass('color-green'); likes_nums.text(parseInt(likes_nums.text()) + 1); } else { // 已收藏 that.find('span').text('收藏'); that.find('span').removeClass('color-green').addClass('color-blue'); likes_nums.text(parseInt(likes_nums.text()) - 1); } }); }); // 加入购物车 $('#addCar').shoping({ endElement:"#car_icon", iconCSS: "", iconImg: $('#jqzoom').attr('src'), endFunction:function(element){ let number = $("input[name=number]").val(); @auth let data = {product_id: product_id,_token:token, number:number}; $.post("/cars", data, function(res){ if (res.code != 200) { layer.msg(res.msg, {icon: 2}); return; } // 更新购物车显示数量 renderIncrementCar(number, false); layer.msg(res.msg, {icon: 1}); }); @endauth @guest LocalCar.increment("{{ $product->uuid }}", "{{ $product->name }}", "{{ $product->thumb }}", number, {{ $product->price }}); // 更新购物车显示数量 renderIncrementCar(number, true); layer.msg('加入本地购物车成功', {icon: 1}); @endguest } }); // 现在购买 $('#nowBug').click(function(){ let _number = $('input[name=number]').val(); window.location.href = "/user/comment/orders/create?ids[]=" + product_id + "&numbers[]=" + _number; }); // 增加和减少按钮 $('#min').click(function () { let val = $('input[name=number]').val(); val = parseInt(val); if (val == 1) { layer.msg('不能再减少了'); return; } $('input[name=number]').val(val - 1); }); $('#add').click(function () { let val = $('input[name=number]').val(); $('input[name=number]').val(parseInt(val) + 1); }); </script> @endsection
07-16
<!doctype html> <html lang="en" dir="ltr" xmlns:th="http://www.thymeleaf.org"> <head> <!-- // Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Required meta tags // --> <meta name="description" content=""> <meta name="author" content="ceosdesigns.sk"> <title>登录</title> <!-- // Favicon --> <link href="login/images/favicon.png" rel="icon"> <!-- Favicon // --> <!-- // Font Awesome 5 Free --> <!-- Font Awesome 5 Free // --> <!-- // Template CSS files --> <link href="login/css/bootstrap.min.css" rel="stylesheet"> <link href="login/css/styles.css" rel="stylesheet"> <!-- Template CSS files // --> </head> <body> <!-- // Preloader --> <div id="nm-preloader" class="nm-aic nm-vh-md-100"> <div class="nm-ripple"> <div></div> <div></div> </div> </div> <!-- Preloader // --> <main id="page-content" class="d-flex nm-aic nm-vh-md-100"> <div class="container"> <div class="row"> <div class="col-md-10 offset-md-1 col-lg-10 offset-lg-1 col-xl-10 offset-xl-1 nm-st nm-st-md"> <div id="logo-container"> <a class="d-flex" href="#" aria-label="登录"> <h1>书画展览管理系统</h1> </a> </div> <form th:action="@{/loginUser}" method="post"> <div class="nm-mb-2 nm-mb-md-2"> <h2>登录</h2> <p>输入您的账户和密码以访问帐户</p> </div> <div class="form-group"> <label for="username">账户</label> <input type="text" class="form-control" id="username" name="username" tabindex="1" placeholder="请输入有效账户" required> </div> <div class="form-group"> <label for="password"> <span class="d-flex nm-jcb nm-aic"> 密码 <span style="color: red" th:text="${status}"></span> </span> </label> <input type="password" class="form-control" tabindex="2" placeholder="请输入密码" id="password" name="password" required> </div> <div class="form-group"> <label for="username">账户</label> <select class="form-select" name="type"> <option value="1" selected>管理员</option> <option value="2">用户</option> </select> </div> <button type="submit" class="btn btn-primary btn-block nm-hvr nm-btn-1"><i class="fas fa-sign-in-alt"></i> 登录</button> </form> </div> </div> </div> <footer class="col-xs-12 col-sm-12 col-md-12 col-lg-6 col-xl-4"> <p> <span class="nm-fs-1 nm-tm">没有账户吗?</span> <a class="nm-fs-1 nm-fw-bd" href="register">注册</a> </p> </footer> <div id="non-form-side" class="col-lg-6 col-xl-8 d-none d-lg-flex nm-aic nm-vh-100"> <div class="overlay"></div> </div> </main> <!-- // Vendor JS files --> <script src="login/js/jquery-3.6.0.min.js"></script> <script src="login/js/bootstrap.bundle.min.js"></script> <!-- Vendor JS files // --> <!-- Template JS files // --> <script src="login/js/script.js"></script> <!-- Template JS files // --> </body> </html>登录页面如何实现的
05-11
<%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/include/adminCommon.jsp"%> <tags:wjs items="calendar.js"></tags:wjs> <body> <!-- 导航条区 --> <c:import url="/WEB-INF/views/admin/adminNavbar.jsp"></c:import> <div id="content"> <div class="container-fluid"> <div class="row-fluid"> <div class="span3"> <!-- 个人信息区 --> <c:import url="/WEB-INF/views/admin/adminInfo.jsp"></c:import> <hr /> <!-- 左侧菜单区 --> <c:import url="/WEB-INF/views/admin/adminLeft.jsp"></c:import> </div> <!-- /span3 --> <div class="span9"> <!--这里是操作完成的消息提示区 --> <c:import url="/WEB-INF/include/message.jsp"></c:import> <!-- 标题区 --> <ul class="breadcrumb"> <li>项目管理<span class="divider">/</span></li> <li><a href="${ctx}/processArea">过程域管理</a> <span class="divider">/</span></li> <li class="active">添加过程</li> </ul> <!-- 表单区 --> <form id="searchForm1" action="${ctx}/processArea/submitadd" method="post"> <div class="widget-header"> <i class="icon-plus"></i> <h3>添加过程</h3> </div> <!-- /widget-header --> <div class="widget-content" style="margin-bottom: 15px;"> <table style="width: 100%"> <tr> <td>过城域标识</td> <td><input type="text" id="txt_processAreaID" name="processAreaID" class="input-medium"></td> </tr> <tr> <tr> <td>过程名称</td> <td><input type="text" id="txt_processAreaName" name="processAreaName" class="input-medium"></td> </tr> <td>过程类型</td> <td> <select id="txt_processAreaType" name="processAreaType" style="width:160px;"> <option value="">--请选择--</option> <c:forEach items="${processAreaList }" var="processAreaType"> <option value="${processArea.processAreaKey }">${processArea.processAreaName }</option> </c:forEach> </select> </td> </tr> <tr> <td>简介</td> <td><textarea rows="10" cols="10" name="remark"></textarea> </td> </tr> <tr> <td align="right" colspan="4"><input class="btn" type="button" onclick="window.history.back(-1)" value="返回"> <input class="btn btn-primary" type="submit" value="确定"> </td> </tr> </table> </div> </form> </div> </div> <!-- /row --> </div> <!-- /container --> </div> <!-- /content --> <!-- 页脚区 --> <c:import url="/WEB-INF/views/admin/adminFooter.jsp"></c:import> </body> <!-- 表单校验区 --> <script type="text/javascript"> $(document).ready(function() { $("#searchForm1").validate({ rules : { processAreaName : { required : true, remote : { url : "${ctx}/processArea/processNameUnique", type : "post", dataType : "json", data : { systemName : function() { return $("#txt_processAreaName").val(); } } } }, processAreaID : { required: true, remote : { url : "${ctx}/processArea/processIDUnique", type : "post", dataType : "json", data : { systemID : function() { return $("#txt_processAreaID").val(); } } } } }, messages : { processAreaName : { remote : "该过程域名称已存在" }, processAreaID : { remote : "该过程标识已存在" } } }); }); </script>
最新发布
09-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值