end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

springboot + jsp 環境で、formクラスを jsp へ渡す場合、<s:form modelAttribute="~"> で指定

無理矢理?、springboot + jsp な環境を作成しようと、 jsp内(※1)で「<s:input type="hidden" path="xeiId" />」を使用したところ、 画面アクセス時にエラーが発生(※2)。

どうやら、「<s:form>」でなく、「<s:form modelAttribute="hello2Form">」のように 引渡すformクラスを指定する必要があるらしい。

【※1】

<%@page import="jp.co.sexy.bknkoutei.common.CommonConst"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="f" uri="http://sastruts.seasar.org/functions" %>
<%@taglib prefix="s" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
  <div id="body-base-middle">
    <s:form>
      <div id="main-middle">
        <s:input type="hidden" path="xeiId" /><br/>
    <input type="submit" name="back" value=" 案件詳細画面へ " /><br/>
        <br/>
      </div>
    </s:form>
  </div>
</body>
</html>

【※2】

org.springframework.web.servlet.tags.form.InputTag,
Neither BindingResult nor plain target object
for bean name 'command' available as request attribute 
java.lang.IllegalStateException:
Neither BindingResult nor plain target object for bean name 'command'
available as request attribute

ちなみにContorollerクラスは以下の通りです。

package jp.co.sexy.bknkoutei.action;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import jp.co.sexy.bknkoutei.form.Hello2Form;

@Controller
public class Hello2Action {
    static protected Logger logger = LogManager.getLogger(Hello2Action.class);
    @Autowired
    MessageSource msgsrc;


    @RequestMapping(value="/hello2", method=RequestMethod.GET)
    public ModelAndView index(
            Hello2Form loginForm,
            BindingResult errors,
            ModelAndView modelview) {

        //modelview.addObject("teiId",  "TEIID99");

        modelview.setViewName("hello/bknContentList_index");
        return modelview;
    }

}