2017-09-05 300 views
1

私はPOSTのデータをいくつかのRESTエンドポイントに転送する簡単なコントローラを作成しようとしています。org.springframework.expression.spel.SpelEvaluationException:EL1007E:プロパティまたはフィールド 'xxxxx'がnullに見つかりません

package com.integration.common.controller; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.PostMapping; 


@Controller 
public class WebController { 

@GetMapping("/form") 
public String form(Model model){ 
    model.addAttribute("fieldProps",new FieldProperties()); 
    return "Form"; 
    } 
@PostMapping("/form") 
public String submit(@ModelAttribute FieldProperties fieldProps){ 
    return "Result"; 
    } 
} 

マイモデル::ここで

は私のコントローラは次のようになります。

package com.integration.common.controller; 

public class FieldProperties { 
    private String owner; 
    private String storyName; 


    public String getOwner() { 
     return owner; 
    } 

    public String getStoryName() { 
     return storyName; 
    } 

    public void setOwner(String owner) { 
     this.owner = owner; 
    } 

    public void setStoryName(String storyName) { 
     this.storyName = storyName; 
    } 
} 

そして最後に、私のフォーム:

<form action="#" th:action="@{/form}" th:object="${fieldProps}" method="post" > 
    <div class="form-group"> 
     <label for="owner">Owner</label> 
     <input type="text" id="owner" th:field="*{owner}" class="form-control"/> 
    </div> 
    <div class="form-group"> 
     <label for="storyName">Name of Story</label> 
     <input type="text" id="storyName" th:field="*{storyName}" class="form-control"/> 
    </div> 
    <input type="submit" value="Submit" /> 
</form> 
私は流れがどのように動作するかを理解する

が、用何らかの理由で私はまだこの例外を取得しています。どういうわけか@Autowiredフラグを自分のコードに組み込む必要がありますか? https://spring.io/guides/gs/handling-form-submission/

+0

缶あなたはあなたが得ている例外を共有してください?完全なコードはhttps://github.com/spring-guides/gs-handling-form-submission.gitにある –

+0

'Servlet.service()サーブレット[dispatcherServlet]のpath [] throwコンテキストのコンテキスト[要求処理に失敗しました。ネストされた例外はorg.thymeleaf.exceptions.TemplateProcessingExceptionです:例外:SpringEL式の評価: "fieldProperties.owner"(結果:8)]根本原因付き ' – acbrown95

答えて

0

モデル属性をあるビューから別のビューに渡す方法は2通りあります。

a。 FieldPropertiesクラスの変数名は、 "fieldProperties"ではなく "fieldProperties"と同じで、 "fieldProperties"を参照するようにhtmlを変更する必要があります。

@Controller 
public class WebController { 

    @GetMapping("/form") 
    public String form(Model model) { 
     model.addAttribute("fieldProperties", new FieldProperties()); 
     return "Form"; 
    } 

    @PostMapping("/form") 
    public String submit(@ModelAttribute FieldProperties fieldProperties) { 

     return "resultForm"; 
    } 
} 

b。あなたはその後、以下にあなたのポストの方法を変更する変数を変更することにより、すべての場所でコードに変更したくない場合は、この方法では1以上のパラメータモデルのモデルを追加し、モデルに属性として再びfieldPropsを追加

@PostMapping("/form") 
    public String submit(@ModelAttribute FieldProperties fieldProps, Model model) { 
     model.addAttribute("fieldProps", fieldProps); 
     return "resultForm"; 
    } 
関連する問題