9月26日

Rooによる超高速開発

コントローラを作る

Roo Shell で以下のコマンドを実行。

> web mvc controller --class ~.HelloController --preferredMapping /helo

昨日の動作するプロジェクトのバックアップを以下の場所に置いたので、エラーが出る人がこちらからコピーしてみてください。

\\kgakusei1\share\澤田\SE3Java2014\20140925

FormDataクラスを作成する。

package jp.abc;

public class FormData {
	private String input;

	public String getInput() {
		return input;
	}

	public void setInput(String input) {
		this.input = input;
	}
}

index.jspxを編集する。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:jsp="http://java.sun.com/JSP/Page" 
     xmlns:spring="http://www.springframework.org/tags" 
     xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" 
     xmlns:form="http://www.springframework.org/tags/form"
     version="2.0">
  <jsp:directive.page contentType="text/html;charset=UTF-8"/>
  <jsp:output omit-xml-declaration="yes"/>
  <spring:message code="label_helo_index" htmlEscape="false" var="title"/>
  <util:panel id="title" title="${title}">
    <spring:message code="application_name" htmlEscape="false" var="app_name"/>
    <h3>
      <spring:message arguments="${app_name}" code="welcome_titlepane"/>
    </h3>
    <p>${message}</p>
    <form:form modelAttribute="formData" action="form">
        <form:input path="input" />
        <input type="submit" />
    </form:form>
  </util:panel>
</div>

HelloController.java を編集する。

package jp.abc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RequestMapping("/helo/**")
@Controller
public class HelloController {

    @RequestMapping(method = RequestMethod.POST, value = "{id}")
    public void post(@PathVariable Long id, ModelMap modelMap,
    		HttpServletRequest request,
    		HttpServletResponse response) {
    }

    @RequestMapping
    public String index(Model model) {
    	model.addAttribute("formData", new FormData());
        return "helo/index";
    }

    @RequestMapping(method = RequestMethod.POST, value = "/form")
    public String post(@ModelAttribute FormData form, Errors result, Model model) {
    	model.addAttribute("message", "You typed: " + form.getInput());
    	return "helo/index";
    }
}

Rooは問題が多いのであきらめましょう!

examプロジェクトに戻ります

JUnitを使ったテスト

以下のサイトを参考に。
http://d.hatena.ne.jp/nakaearth/20131204

src/test/java に新規で jp.abc パッケージを作成。
[新規]-[JUnitテストケース]でテストクラスを作成。

package jp.abc;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.context.WebApplicationContext;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class HomeControllerTest {

	@Autowired
	private WebApplicationContext wac;

	private MockMvc mockMvc;

	@Before
	public void setUp() throws Exception {
		mockMvc = webAppContextSetup(wac).build();
	}

	@Test
	public void testHome() {
		fail("まだ実装されていません");
	}

	@Test
	public void testQuery() {
		fail("まだ実装されていません");
	}

}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です