Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从html表单在构造函数中使用枚举创建java对象_Java_Angularjs_Spring Mvc_Enums - Fatal编程技术网

从html表单在构造函数中使用枚举创建java对象

从html表单在构造函数中使用枚举创建java对象,java,angularjs,spring-mvc,enums,Java,Angularjs,Spring Mvc,Enums,我有这样的java类: public class Action{ private String title; private String description; private ActionState actionState; public Action(){}; public Action(String title, String description, ActionState actionState) this.title = title; this.descri

我有这样的java类:

public class Action{

private String title;
private String description;

private ActionState actionState;

public Action(){};
public Action(String title, String description, ActionState actionState)
    this.title = title;
    this.description = description;
    this.actionState = actionState;
}




public String getTitle() {
    return title;
}

public String getDescription() {
    return description;
}

public ActionState getActionState() {
    return actionState;
} 
public enum ActionState {

CREATED,
OPENED,
CLOSED
}

和控制器:

    @RequestMapping(value = "/new/addAction", method = RequestMethod.POST)
public @ResponseBody void addAction(@RequestBody Action action){
    actionService.add(action);
}

   @RequestMapping(value = "/new/actionStates", method = RequestMethod.GET)
@ResponseBody
public List<String> returnActionsStates(){
     return actionService.enumToStringList(ActionState.class);
}
}

这是角度控制器

app.controller('actionController',function ($scope, $http) {
    $scope.addAction = function(action){
        $scope.action = {};
            $http.post('actions/new/addAction', action).success(function(){
                $scope.action.title='';
                $scope.action.description='';
            })
}

$scope.getActionStates = function() {
    $http.get('actions/new/actionStates').success(function(actionTypesState){
        $scope.states = actionTypesState;
    })
}
最后是html表单

<b>Ttitle</b><input type="text" data-ng-model="action.title">
<br>
<b>Description</b><input type="text" data-ng-model="action.description">

<div data-ng-init="getActionStates()">
<b>Action State</b> <select id="actionState">
<option value="">-- choose--</option>
<option data-ng-repeat="state in states" value="{{state}}">{{state}}</option>
</select><br>
</div>
<br>
<button data-ng-click="addAction(action)">submit</button>
Ttitle

描述 动作状态 --选择-- {{state}}

提交
其作品的名称和描述。我的意思是,我的
addAction
控制器中的
Action
对象的标题值与我在html表单中键入的标题值相等,其描述值相同

问题是:如何使它以与我的
enum
值相同的方式工作

我知道我可以只发送带有枚举名的
字符串
,然后使用
valueOf
方法在控制器中创建它。但是我想自动创建整个对象:)


如果有人想知道,Spring会自动将JSON转换为ENUM。 这里的问题是html代码,它根本不发送JSON。 通过下面的代码,它可以工作

<div data-ng-init="getActionStates()">
    <b>Action State</b> <select data-ng-model="action.actionState" data-ng-options="actionState for (id, actionState) in states">
    <option value="">{{neutralActionState}}</option>
</select>
</div>

动作状态
{{neutralActionState}}