Master
Apr 21st, 2007, 02:08 PM
Hi!!
I have folowing problem:
I wrote a spring programm without the spring tags and it works good.
As next i will use the spring tags <spring:bind .... and after i have insert them i get folowing errors:
1) on the Tomcat Server
ERROR [org.springframework.web.servlet.tags.BindTag] - Neither Errors instance nor plain target object for bean name 'db' available as request attribute
javax.servlet.jsp.JspTagException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
2) on my jsp page
org.apache.jasper.JasperException: Exception in JSP: /WEB-INF/jsp/index.jsp:95
92: <span class="stdFont">
93: <label></label>
94: </span></td>
95: <spring:bind path="db.loginname">
96: <td width="159" class="stdFont">
97: <input type="text" name="loginname" value="<c:out value="${status.value}"/>"/>
98: </td>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:368)
...
root cause
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:791)
org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspServi ce(index_jsp.java:307)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
...
root cause
javax.servlet.jsp.JspTagException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
org.springframework.web.servlet.tags.BindTag.doSta rtTagInternal(BindTag.java:118)
org.springframework.web.servlet.tags.RequestContex tAwareTag.doStartTag(RequestContextAwareTag.java:7 7)
org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspServi ce(index_jsp.java:164)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
....
and so on
some parts of source:
jsp
...
<spring:bind path="db.loginname">
<td width="159" class="stdFont">
<input type="text" name="loginname" value="<c:out value="${status.value}"/>"/>
</td>
<td width="50%">
<font color="red"><c:out value="${status.errorMessage}"/></font>
</td>
</spring:bind>
...
servlet
<bean id="loginController" class="LoginController">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>db</value></property>
<property name="commandClass"><value>KundeDataBase</value></property>
<property name="validator" ref="kundeDataValidator"></property>
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="formView"><value>index</value></property> <!-- View in der sich das Formular befindet -->
<!-- <property name="successView"><value>welcome.html</value></property> --> <!-- Nächsten Controller callen -->
<property name="successView"><value>welcome.html</value></property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlH andlerMapping">
<property name="mappings">
<props>
<prop key="/index.html">indexController</prop>
<prop key="/welcome.html">loginController</prop>
</props>
</property>
</bean>
<bean id="kundeDataValidator" class="KundeDataValidator"></bean>
my class
public class KundeDataBase {
private String loginname;
private String pw;
/** Creates a new instance of KundeDataBase */
public KundeDataBase(String name, String p)
{
loginname = name;
pw = p;
}
public void setloginname(String name)
{
loginname = name;
}
public String getloginname()
{
return loginname;
}
.... getters and setters
my validator
public KundeDataValidator() {
}
public boolean supports(Class clazz) {
return clazz.equals(KundeDataBase.class);
}
public void validate(Object obj, Errors errors) {
KundeDataBase db = (KundeDataBase) obj;
if (db == null)
{
errors.rejectValue("loginname", "error.not-specified", null,
"Value required.");
}else
{
if(db.getloginname().trim().length() <= 0)
errors.rejectValue("loginname","error.too-low", null, "long");
else
{
if(db.getpw().trim().length() <= 0)
errors.rejectValue("pw","error.too-low", null, "short");
}
}
}
}
my controller
public class LoginController extends SimpleFormController
{
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,
Object command, BindException errors) throws Exception {
System.out.println("TEST");
KundeDataBase db = (KundeDataBase) command;
List mylist = (List) h.find("from Kunde as k where k.KLoginname = 'asdf' and k.KPasswort = 'asdf'");
if(mylist.size() > 0)
{
return new ModelAndView(this.getSuccessView(), errors.getModel());
}
else
{
return new ModelAndView("index","","");
}
}
protected Object formBackingObject(HttpServletRequest request) throws ServletException {
KundeDataBase db = new KundeDataBase(request.getParameter("loginname").toString(), request.getParameter("pw").toString());
return db;
}
public void setSessionFactory (SessionFactory sf) {
h= new HibernateTemplate(sf);
System.out.println("HIBERNATE!!!!!!!!!!!!");
}
private HibernateTemplate h;
}
has anyone some ideas ???
pls help me
I have folowing problem:
I wrote a spring programm without the spring tags and it works good.
As next i will use the spring tags <spring:bind .... and after i have insert them i get folowing errors:
1) on the Tomcat Server
ERROR [org.springframework.web.servlet.tags.BindTag] - Neither Errors instance nor plain target object for bean name 'db' available as request attribute
javax.servlet.jsp.JspTagException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
2) on my jsp page
org.apache.jasper.JasperException: Exception in JSP: /WEB-INF/jsp/index.jsp:95
92: <span class="stdFont">
93: <label></label>
94: </span></td>
95: <spring:bind path="db.loginname">
96: <td width="159" class="stdFont">
97: <input type="text" name="loginname" value="<c:out value="${status.value}"/>"/>
98: </td>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:368)
...
root cause
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:791)
org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspServi ce(index_jsp.java:307)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
...
root cause
javax.servlet.jsp.JspTagException: Neither Errors instance nor plain target object for bean name 'db' available as request attribute
org.springframework.web.servlet.tags.BindTag.doSta rtTagInternal(BindTag.java:118)
org.springframework.web.servlet.tags.RequestContex tAwareTag.doStartTag(RequestContextAwareTag.java:7 7)
org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspServi ce(index_jsp.java:164)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
....
and so on
some parts of source:
jsp
...
<spring:bind path="db.loginname">
<td width="159" class="stdFont">
<input type="text" name="loginname" value="<c:out value="${status.value}"/>"/>
</td>
<td width="50%">
<font color="red"><c:out value="${status.errorMessage}"/></font>
</td>
</spring:bind>
...
servlet
<bean id="loginController" class="LoginController">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>db</value></property>
<property name="commandClass"><value>KundeDataBase</value></property>
<property name="validator" ref="kundeDataValidator"></property>
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="formView"><value>index</value></property> <!-- View in der sich das Formular befindet -->
<!-- <property name="successView"><value>welcome.html</value></property> --> <!-- Nächsten Controller callen -->
<property name="successView"><value>welcome.html</value></property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlH andlerMapping">
<property name="mappings">
<props>
<prop key="/index.html">indexController</prop>
<prop key="/welcome.html">loginController</prop>
</props>
</property>
</bean>
<bean id="kundeDataValidator" class="KundeDataValidator"></bean>
my class
public class KundeDataBase {
private String loginname;
private String pw;
/** Creates a new instance of KundeDataBase */
public KundeDataBase(String name, String p)
{
loginname = name;
pw = p;
}
public void setloginname(String name)
{
loginname = name;
}
public String getloginname()
{
return loginname;
}
.... getters and setters
my validator
public KundeDataValidator() {
}
public boolean supports(Class clazz) {
return clazz.equals(KundeDataBase.class);
}
public void validate(Object obj, Errors errors) {
KundeDataBase db = (KundeDataBase) obj;
if (db == null)
{
errors.rejectValue("loginname", "error.not-specified", null,
"Value required.");
}else
{
if(db.getloginname().trim().length() <= 0)
errors.rejectValue("loginname","error.too-low", null, "long");
else
{
if(db.getpw().trim().length() <= 0)
errors.rejectValue("pw","error.too-low", null, "short");
}
}
}
}
my controller
public class LoginController extends SimpleFormController
{
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,
Object command, BindException errors) throws Exception {
System.out.println("TEST");
KundeDataBase db = (KundeDataBase) command;
List mylist = (List) h.find("from Kunde as k where k.KLoginname = 'asdf' and k.KPasswort = 'asdf'");
if(mylist.size() > 0)
{
return new ModelAndView(this.getSuccessView(), errors.getModel());
}
else
{
return new ModelAndView("index","","");
}
}
protected Object formBackingObject(HttpServletRequest request) throws ServletException {
KundeDataBase db = new KundeDataBase(request.getParameter("loginname").toString(), request.getParameter("pw").toString());
return db;
}
public void setSessionFactory (SessionFactory sf) {
h= new HibernateTemplate(sf);
System.out.println("HIBERNATE!!!!!!!!!!!!");
}
private HibernateTemplate h;
}
has anyone some ideas ???
pls help me