请帮我解决错误。我正在学习Spring MVC。我无法解决这个问题。我经历了很多论坛和网站,但我无法找到或解决它。但是,我知道这个问题是因为表单标记中的commandName。如果我删除,我可以转到该页面。
我的问题是: 我有一个登录表单,因为有很多用户级别。
的login.jsp
<sf:form commandName="userLogin" action="${pageContext.request.contextPath}/userLogin" method="POST">
<sf:input path="UserName" type="text" name="UserName" class="form-control input-lg" id="focusedInput" />
<sf:errors path="UserName" cssClass="alert alert-danger"></sf:errors>
<sf:input path="password" type="password" class="form-control input-lg" name="password" id="focusedInput" />
<sf:errors path="password" cssClass="alert alert-danger"></sf:errors>
<label for="sel1">Login as:<sup>*</sup></label>
<sf:select path="userLevel" class="form-control input-lg" id="sel1" name="userLevel">
<option value="">Select User</option>
<option value="tenant">Tenant</option>
<option value="manager">Manager</option>
<option value="vendor">Vendor</option>
<option value="admin">Administrator</option>
</sf:select>
<sf:errors path="userLevel" cssClass="alert alert-danger"></sf:errors>
<input type="submit" value="Login" name ="form1" class="btn btn-success btn-md">
</sf:form>
我的控制器类是
HomeController.java
@Controller
public class HomeController {
@RequestMapping("/")
public String showHome(Model model){
model.addAttribute("title", "Welcome to Wildwood Apartment");
return"home";
}
@RequestMapping("/adminHome")
public String showAdmin(Model model){
model.addAttribute("title", "Welcome to Wildwood Administrator Page");
return"admin";
}
@RequestMapping("/managerHome")
public String showManager(Model model){
model.addAttribute("title", "Welcome to Manager's Dashboard");
return"manager";
}
@RequestMapping("/login")
public String login(Model model){
model.addAttribute("title", "Login Page");
return"login";
}
@RequestMapping(value="/userLogin", method=RequestMethod.POST)
public String loginAction(Model model, @ModelAttribute("userLogin") @Valid Login userLogin, BindingResult result){
if(result.hasErrors()){
model.addAttribute("title", "Login Page");
return"login";
}
model.addAttribute("userLogin", new Login());
return"redirect:/adminHome";
}
我的豆类 的 Login.java
public class Login {
@Size(min=3, max=15)
private String userName;
@Size(min=3, max=15)
private String password;
@NotBlank
private String userLevel;
//private int userid;
public Login(){}
public Login(String userName, String password, String userLevel){
this.userName = userName;
this.password = password;
this.userLevel = userLevel;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserLevel() {
return userLevel;
}
public void setUserLevel(String userLevel) {
this.userLevel = userLevel;
}
}
我的 Web.xml
<display-name>WWMVC</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>WHome</display-name>
<servlet-name>WHome</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WHome</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/jagan</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我的Dispatcher Servlet 的 WHome-servlet.java
<jee:jndi-lookup jndi-name="jdbc/jagan" id="dataSource"
expected-type="javax.sql.DataSource">
</jee:jndi-lookup>
<context:component-scan base-package="controller"></context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:resources mapping="/bootstrap/**" location="/bootstrap/" />
在我的主页上,我有一个登录页面的链接:
**<li><a href="${pageContext.request.contextPath}/login">LOGIN</a></li>**
我得到的错误信息是 HTTP状态500 - java.lang.IllegalStateException:BindingResult和bean名称的普通目标对象&#39; userLogin&#39;可用作请求属性
注意:我只复制并粘贴了大部分重要代码。此外,我正在使用maven和bootstrap进行设计。我可以去我的主页但是当我点击登录链接时,我收到了上述错误。
提前致谢。
贾根
答案 0 :(得分:0)
如果任何人正在学习弹簧形式,那么它可能会有所帮助。因此,我在这里发表评论。 我有一个问题,我没有将空对象发送给表单 例如: 如果我需要用户注册表格:
在该用户注册表的GetMapping中,我应该发送空的User对象
@GetMapping(/注册) 公共ModelAndView registerForm(ModelAndView mv){ mv.addObject(“ user”,new User()); .... }
在春季形式中,我应该有一个属性,名称应该是用户
在处理表格时,我应该获取modelAttribute并对其进行处理
公共ModelAndView进程Register(@Valid @ModelAttribute(“ user”)用户,ModelAndView mv){ ...... }
谢谢 贾根