@ModelAttribute在方法级别。从其他控制器访问它。可能吗?

时间:2015-12-10 08:21:22

标签: spring-mvc

@Controller
@RequestMapping("lookup")
public class LookupController {

    @ModelAttribute("status")
    public List<String> status() {
        List<String> lstStatus = new ArrayList<String>();
        lstStatus.add("Open");
        lstStatus.add("Reserved");
        lstStatus.add("Parked");
        lstStatus.add("Inactive");
        return lstStatus;
    }

}



@Controller
@RequestMapping("parkingSlot")
public class ParkingSlotController   {

    @RequestMapping("edit/{slotId}")
    public String edit(@PathVariable Integer slotId, Map<String, Object> model)     {
        ParkingSlot parkingSlot = parkingSlotDao.get(slotId);
        model.put("parkingSlot", parkingSlot);

        return "ParkingSlotForm";
    }


}

ParkingSlotForm.jsp

<form:form action= "${root}parkingSlot/save"   modelAttribute="parkingSlot" method="post" >

            <tr>
                <td>Status:</td>
                <td>
                    <form:select path="status" >
                        <form:options items="${status}"    />
                    </form:select>
                    </td>
            </tr>

我无法在此处看到状态下拉列表。 我只是看到空的下拉列表而没有填充项目。 如果我将该方法@ModelAttribute(&#34; status&#34;)移动到ParkingSlotController中,那么它可以正常工作。但那不是我想要的那个。但我的想法是将所有常见的下拉列表保存在一个集中控制器中。 我该怎么做?

1 个答案:

答案 0 :(得分:0)

编写一个controlleradvice并使用modelattributes添加方法。

  

@ControllerAdvice是用于的Component的特化   定义@ExceptionHandler,@ InitBinder和@ModelAttribute方法   适用于所有@RequestMapping方法。