angularjs - CRUD在angularJs和struts2中的应用

标签 angularjs struts2

我想要一个在 struts2 和 angularJs 中的简单 CRUD 应用程序。

我试过下面的代码

addTourController.js

 var myapp = angular.module('myapp', []);
 myapp.controller('addTourCart', function($scope, $http){
 $scope.getDataFromServer = function(){
     var jouMObj={};
     var params = {
        "FromState" : $scope.TourFromState,
        "FromCity" : $scope.TourFromCity,
        "FromDate" : $scope.TourFromDate,
        "ToState" : $scope.TourToState,
        "ToCity" : $scope.TourToCity,
        "ToDate" : $scope.TourToDate,
        "Purpose" : $scope.purpose,
        "StayDetails" : $scope.TourStayMode
     };
     var data = angular.toJson(params);
     $http( {
            method : 'POST',
            url : 'addTourCart.action',
            data : 'value=' + data,
            headers : {
                'Content-Type' : 'application/x-www-form-urlencoded'
            }
        }).success(function(data){
            $scope.jouMObj = data.jouMObj;
            alert(data.jouMObj);
            alert(params.FromDate);
     });
  }
 });

jsp页面

   <!DOCTYPE html>
   <html>
   <head>
   <meta charset="ISO-8859-1">
   <title>Tour</title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js">  </script>
</head>
<body>
<div ng-app="myapp">
          <div id="divjourneydetail" ng-controller="addTourCart">
                    <table id="table2" align="center"  cellpadding="0" cellspacing = "0">
                    <tr>
                        <th><b>From</b></th>
                        <th><b>To</b></th>
                        <th><b>Travel Details</b></th>
                        <th>Add / Reset</th>
                    </tr>
                    <tr>
                        <td><strong>State/City</strong></td>
                        <td><strong>Date</strong></td>
                        <td><strong>State/City</strong></td>
                        <td><strong>Date</strong></td>
                        <td><strong>Purpose</strong></td>
                        <td><strong>Stay Detail</strong></td>
                        <td>
                            <input type="button" id="AddTourDtl" value="Add" ng-click="getDataFromServer()"/>
                      </td>
                    </tr>
                    <tr>
                        <td>
                            <s:select name="TourFromState" id="TourFromState" list="statelist" listKey="stateCode" listValue="stateName" ng-model="TourFromState" headerKey="" headerValue="-Select State-" value="27" onchange="jFun_stateByCityList(this.value,'TourFromCity')"/>
                            <div id="tourReplaceCity">
                                <s:select name="TourFromCity" id="TourFromCity" list="citylist" listKey="regCd" listValue="distName" ng-model="TourFromCity"  headerKey="" headerValue="-Select City-" onchange="jFun_setNewCity(this.value,'getTourFromNewCity','NewTourFromCity')"/>
                            </div>
                            <div id="getTourFromNewCity"></div>
                        </td>
                        <td>
                            <input type="text" name="FromDate" id="TourFromDate" value=""  maxlength="10" ng-model="TourFromDate" >
                            <img src="<%=request.getContextPath()%>/MahBill/Images/calender_anim.gif" onClick="popupCalender('TourFromDate');"  width="19" height="19"  >
                        </td>
                        <td>
                            <s:select name="TourToState" id="TourToState" list="statelist" listKey="stateCode" listValue="stateName" ng-model="TourToState" headerKey="" headerValue="-Select State-"value="27" onchange="jFun_stateByCityList(this.value,'TourToCity')"/>
                            <div id="tourReplaceToCity">
                                <s:select name="TourToCity" id="TourToCity" list="citylist" listKey="regCd" listValue="distName" ng-model="TourToCity" headerKey="" headerValue="-Select City-" onchange="jFun_setNewCity(this.value,'getTourNewCity','NewTourToCity')"/>
                            </div>
                            <div id="getTourNewCity" ></div>
                        </td>
                        <td>
                            <input type="text" name="TourToDate" id="TourToDate" value="" maxlength="10"  ng-model="TourToDate" />
                            <img src="<%=request.getContextPath()%>/MahBill/Images/calender_anim.gif" onClick="popupCalender('TourToDate');"  width="19" height="19"  >
                        </td>
                        <td >
                            <s:textarea key="purpose" name="purpose" id="Tourpurpose" ng-model="purpose" cols="24" rows="2"/> 
                        </td>
                        <td>
                             <s:select name="TourStayMode" id="TourStayMode" headerValue="- Select -" headerKey="" ng-model="TourStayMode"
                            list="staymodelist" listKey="staymodeid" listValue="staymodename" onchange="return jFun_stayMode(this.value);"/>
                        </td>
                   </tr>
                </table>
                <div id="cartTourDetails">
                    <table id="table2" align="center"  cellpadding="0" cellspacing = "0">
                        <tr>
                            <th align="center" colspan="2" style="border-right:1px solid #333;"><b>From</b></th>
                            <th align="center" colspan="2" style="border-right:1px solid #333;"><b>To</b></th>
                            <th align="center" colspan="2" style="border-right:1px solid #333;"><b>Travel Details</b></th>
                        </tr>
                        <tr>
                            <td><strong>State/City</strong></td>
                            <td><strong>Date</strong></td>
                            <td><strong>State/City</strong></td>
                            <td><strong>Date</strong></td>
                            <td><strong>Purpose</strong></td>
                            <td><strong>Stay Detail</strong></td>
                        </tr>
                        <tr ng-repeat="journey in params">
                            <td  valign="middle">
                                {{FromState}}
                                <div id="tourReplaceCity">
                                    {{FromCity}}
                                </div>
                            </td>
                            <td>{{FromDate}}</td>
                            <td valign="middle">
                                {{ToState}}
                                <div id="tourReplaceToCity">
                                    {{ToCity}}
                                </div>
                            </td>
                            <td>{{ToDate}}</td>
                            <td>{{purpose}} </td>
                            <td>{{ToDate}}</td>
                       </tr>
                    </table>
                </div>
                </div>
 </div>

Struts.xml

 <package name="base" extends="json-default">
        <action name="addTourCart" class="Action.Tour"  method="addTourCart">
            <result type="json">
                <param name="root">jouMObj</param>
            </result>
        </action>
 </package>

模型类

   public class JourneyDetail_M implements Serializable{
   private String FromState;
   private String FromCity;
   private String FromDate;
   private String ToState;
   private String ToCity;
   private String ToDate;
   private String staymodeid;
   private String staymodename;
   private String purpose;
    //getter and setter
}

Action 类

public class Tour extends ActionSupport {
    JourneyDetail_M jouMObj=new JourneyDetail_M();

public String addTourCart(){
    try {
        System.out.println(request.getParameter("value"));

        String TourFromState=request.getParameter("FromState");
        String TourFromCity=request.getParameter("FromCity");
        String TourToState=request.getParameter("ToState");
        String TourToCity=request.getParameter("ToCity");
        String TourFromDate=request.getParameter("FromDate");
        String TourToDate=request.getParameter("ToDate");
        String purpose=request.getParameter("Purpose");
        String stayMode=request.getParameter("StayDetails");

        jouMObj.setFromState(TourFromState);
        jouMObj.setFromCity(TourFromCity);
        jouMObj.setFromDate(TourFromDate);
        jouMObj.setToState(TourToState);
        jouMObj.setToCity(TourToCity);
        jouMObj.setToDate(TourToDate);
        jouMObj.setPurpose(purpose);
        jouMObj.setStaymodeid(stayMode);
    } catch (IOException e) {
        e.printStackTrace();
        return "error";
    }
    return SUCCESS;
}
public JourneyDetail_M getJouMObj() {
    return jouMObj;
}
public void setJouMObj(JourneyDetail_M jouMObj) {
    this.jouMObj = jouMObj;
}

 }

这是我的代码 在使用 request.getParameter("value") 的操作中,我获得了所有值,但如何设置并从操作类中获取?

最佳答案

我不熟悉 AngularJS.... 但 data : 'value=' + data, 行意味着您将所有数据作为单个请求参数传递给您的操作()。 struts 无法读取 value 并为您填充 JourneyDetail_M 对象。

您需要使用一些 gson 实用程序类将 request.getParameter("value") 反序列化为您的对象。

或者您可以使用不带 angular.toJson 的 html 提交,如 Angularjs - simple form submit 中所述.这样,所有参数都单独发送。使您的 struts 操作 ModelDriven 并且您的模型可以由 struts 填充。


可能是命名问题...可能您的操作属性名称是驼峰命名。例如,在您的操作中将 FromState 重命名为 fromState 并确保您有 public setFromState (String ... ) 还设置了输入名称在你的 jsp 中到 fromState

此外,在使用 struts 操作时,让 struts 填充您的操作属性,并且尽可能不要使用请求。

关于angularjs - CRUD在angularJs和struts2中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39285563/

相关文章:

angularjs - [FromBody] 中的字节数组和 JSON

javascript - 在 AngularJS 中检测和验证客户端日期更改

java - 无法在我的 web 应用程序中显示我的 pdf(不在阻止模式下)

java - Struts2 日期标签时区行为

java - JBOSS Struts 2 应用程序入侵

java - 没有Struts标签的Struts 2文件上传

java - 在java中保存多个附件

javascript - AngularJS 文档就绪无法正常工作

javascript - 当用户单击提交按钮时如何显示用户输入。当用户单击清除按钮时也会清除消息。 (Angularjs)

java.sql.SQLRecoverableException : Closed Connection