Java 我可以防止在操作阶段调用ModelAttribute方法吗?
我有以下课程Java 我可以防止在操作阶段调用ModelAttribute方法吗?,java,portlet,spring-portlet-mvc,Java,Portlet,Spring Portlet Mvc,我有以下课程 @Controller @RequestMapping( "VIEW" ) @SessionAttributes( "application" ) public class EditApplicationController { private static final Logger logger = LoggerFactory.getLogger( EditApplicationController.class ); p
@Controller
@RequestMapping( "VIEW" )
@SessionAttributes( "application" )
public class EditApplicationController {
private static final Logger logger = LoggerFactory.getLogger( EditApplicationController.class );
private final ApplicationService applicationService;
@Autowired
public EditApplicationController( ApplicationService appServ ) {
this.applicationService = appServ;
}
@RenderMapping( params = "action=editApplicationForm" )
public String showEditApplication() {
return "editApplicationForm";
}
@ActionMapping( params = "action=editApplication" )
public void editApplication( @Valid ApplicationDTO application ) {
try {
this.applicationService.updateApplication( application );
} catch ( final ApplicationNotFound e ) {
logger.error( "No application exists with the given application id." );
}
}
@ModelAttribute( "application" )
public Application getApplication( @RequestParam long appId ) throws ApplicationNotFoundException {
final Application app = this.applicationService.findApplicationById( appId );
if ( app == null ) {
throw new ApplicationNotFoundException();
}
return app;
}
}
问题是,当我处于操作阶段时,我不希望或不需要检索ModelAttribute,因为我完全处理提交的表单对象。我可以将request param设为非必需并执行空检查,或者我可以添加一个新的控制器来单独执行操作,但这两个都感觉笨拙。笨拙对您意味着什么;-),在这种情况下,可能更复杂一点是,我认为在操作阶段根本不需要ModelAttributes,所以似乎应该有一种方法只在渲染期间运行它。这可能只是因为我对春天缺乏经验。