2016-09-11 3 views
1

を私のbuilds.htmlページでは、私は次のような形式があります春ブーツでフォームに別のパッケージからモデルを使用 - Javaの

<div id="deployment"> 
    <form action="#" th:action="@{/builds}" th:object="${build}" method="post"> 
     <textarea rows="20" cols="150" th:field="*{configuration}"> 
     </textarea> 
     <br></br> 
    <button class="btn btn-primary btn-cons" type="submit">Deploy</button> 
    </form> 
</div> 

を私BuildsControler.javadeploymentsパッケージである:

import builds.Build; 

@Controller 
@ComponentScan("builds") 
public class BuildsController { 

// @Autowired 
// private BuildsRepository buildsRepository; 
private final static Logger logger = Logger.getLogger(BuildsController.class); 

/* 
* Add the builds url page 
*/ 
@GetMapping("/builds") 
public String index(Model model) { 
    model.addAttribute("builds", new Build()); 
    return "builds"; 
} 

/** 
* 
* @param object 
* @return 
*/ 
@PostMapping("/builds") 
public Build deploy(@ModelAttribute Build build) { 
    logger.info(String.format("--------- Deploying build: %s --------", build)); 
    return build; 
} 

}

Buildモデルはbuildsパッケージに含まれています。

@Document(collection = "builds") 
public class Build { 

    @Id 
    @JsonSerialize(using = ToStringSerializer.class) 
    private String id; 
    private String date; 

    @NotNull 
    private String configuration; 

    public Build() { 
    } 

    public Build(String configuration) { 
     this.id = new ObjectId().toHexString(); 
     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     this.date = dateFormat.format(new Date()); 
     this.configuration = configuration; 
    } 
} 

だから私は、次のエラーを取得しています:Buildは別のパッケージであるため、

[THYMELEAF][http-nio-8080-exec-1] Exception processing template "builds": Exception evaluating SpringEL expression: "builds.build" (builds:514) 
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "builds.build" (builds:514)] with root cause 
org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 7): Property or field 'build' cannot be found on object of type 'builds.Build' - maybe not public? 

は、どのように私は、フォームでbuildモデルを使用することができますか?

+0

コンポーネントスキャン中にビルドパッケージを含めましたか? – skm

+0

@skmフルコントローラ – cybertextron

答えて

2

春はそれを見つけることができませんので、あなたは、ここにbuildth:object="${build}"を使用しているため、GETメソッドに属性を追加するときは、buildないbuildsを使用する必要があります。

model.addAttribute("build", new Build()); 

この文書exampleが役立ちます。

+0

を含むように私の質問を更新しました。これは簡単でした...最近、多くのLOLをコーディングしています! – cybertextron

+0

@cybertextron Happens。これで答えを受け入れることができます。 :) –

関連する問題