【发布时间】:2025-12-21 23:40:15
【问题描述】:
我正在使用 MultiActionCotroller 来处理用户详细信息凝乳操作。 在控制器中,我定义了添加、删除、更新方法,这些方法引用了不同的页面。 然后每个页面调用不同的控制器(SimpleFormController)来执行它们的操作,但是当我试图调用不同的控制器时,它不会去那个控制器。它再次使用引用页面的操作路径名称搜索 MultiActionController。
它没有脱离 MultiActionController,这里我不了解 MultiActionController 的行为。
在我的示例中,在 add_details_form.jsp 中,我定义了操作路径名称,即“details_path.htm”。这假设调用“AddCtrl”控制器,但它不会调用 AddCtrl 而是 UserMultiCtrl。 真的是卡在了这里,走不动了。
我不熟悉注解
我浏览了很多网站,但没有得到任何...
我对 * 的解决方案寄予厚望。
提前致谢
这是我的代码
索引.jsp
<ul>
<li><a href="multiaction/add.htm">Add User Details</a><br>
</li>
<li><a href="multiaction/update.htm">Update User Details</a>
</li>
<li><a href="multiaction/delete.htm">Delete User Details</a>
</li>
</ul>
用户多控件
public class UserMultiCtrl extends MultiActionController {
public ModelAndView add(HttpServletRequest request,HttpServletResponse response)throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("add_details_form");
return mav;
}
public ModelAndView update(HttpServletRequest request,HttpServletResponse response)throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("update_details_form");
return mav;
}
public ModelAndView delete(HttpServletRequest request,HttpServletResponse response)throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("delete_details_form");
return mav;
}
}
Spring-Servlet.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="/multiaction/*.htm" class="ctrlPack9.UserMultiCtrl">
<property name="methodNameResolver" >
<bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />
</property>
</bean>
<bean id="/details_path.htm" class="ctrlPack9.AddCtrl">
<property name="commandClass" value="hiberPack9.UserDetails"/>
<property name="commandName" value="userDetails"/>
<property name="formView" value="add_details_form"/>
<property name="successView" value="userDetails_list"/>
</bean>
add_details_form.jsp
<form:form action="details_path.htm" commandName="userDetails" method="POST">
User Name:<input type="text" name="name" /><br/>
Address:<input type="text" name="address" /><br/>
Age:<input type="text" name="age" /><br/>
<input type="submit" value="submit" />
</form:form>
AddCtrl.java
public class AddCtrl extends SimpleFormController {
private DetailsJB djb;
public void setDjb(DetailsJB djb) {
this.djb = djb;
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
UserDetails detail = (UserDetails) command;
djb.store(detail);
List userDetails = djb.retrive();
ModelAndView mav = new ModelAndView();
mav.addObject("userDetails", userDetails);
mav.setViewName("userDetails_list");
System.out.println("in addctrl onSubmit ");
return mav;
}
}
我明白了实际问题在哪里。 与spring-servlet.xml无关,我们可以用任何方式进行url映射。
当任何请求转到 MultilActionController(UserMultiCtrl) 时,它会将“multiaction”添加到 url 标题中,这就是为什么当我尝试使用操作路径名称调用 AddCtrl details_path.htm。它在 url 中附加了后缀 multiaction。所以它正在搜索 MultilActionController(UserMultiCtrl) 并且没有得到任何合适的方法。
如果有人知道,如何在 url 栏中解析这个 url,那么我可以得到我的解决方案。 否则我必须将 multiaction 后缀附加到每个操作路径,我不想这样做。
【问题讨论】:
-
显示处理程序映射是如何定义的。
-
以下两种情况你试过了吗?
标签: java spring spring-mvc spring-webflow