2007-02-28
大家帮我看看,我的JSF程序为什么总是IllegalArgumentException
关键字: jsf
程序的环境
eclipse 3.2
myeclipse 5.1
hibernate 3.1(myeclipse add capacity自动加载的)
jstl 1.1(同样是自动加载的)
sun jsf 1.1.01(同样是自动加载的)
j2se sdk 1.6
mysql 5.0
tomcat 5.5.20
在网上看了很多教程,
我在myeclipse5里也做一个简单的login程序,
但是老是出现错误,我的程序就只有三个页面 一个index.jsp,一个success.jsp和fail.jsp
不知道为什么在index.jsp里绑定bean时就老出现IllegalArgumentException这样的错误或是说bean无法初始
数据库用hibernate连的,写了两个.java的文件测试能正常运行
我的数据库也非常简单 一个表只有三个健值 id(BINGINT) username(varchar(20)) password(varchar(20))
大家能不能帮我看看我的程序,帮我改改.....都两三个月了,我还是没能正常写出一个jsf程序,总是处处碰壁
eclipse 3.2
myeclipse 5.1
hibernate 3.1(myeclipse add capacity自动加载的)
jstl 1.1(同样是自动加载的)
sun jsf 1.1.01(同样是自动加载的)
j2se sdk 1.6
mysql 5.0
tomcat 5.5.20
在网上看了很多教程,
我在myeclipse5里也做一个简单的login程序,
但是老是出现错误,我的程序就只有三个页面 一个index.jsp,一个success.jsp和fail.jsp
不知道为什么在index.jsp里绑定bean时就老出现IllegalArgumentException这样的错误或是说bean无法初始
数据库用hibernate连的,写了两个.java的文件测试能正常运行
我的数据库也非常简单 一个表只有三个健值 id(BINGINT) username(varchar(20)) password(varchar(20))
大家能不能帮我看看我的程序,帮我改改.....都两三个月了,我还是没能正常写出一个jsf程序,总是处处碰壁
评论
flydeer2003
2007-03-16
<h:inputText binding="#{userBean.username}" value="username"
maxlength="20"></h:inputText>
<br>
<h:inputText binding="#{userBean.password}" value="password"
maxlength="20"></h:inputText>
上面是从你的代码里copy出来的,注意粗体部分。
jsf中的绑定有两种,一种是组件绑定,一种是值绑定。
binding是组件绑定,它是通过EL表达式和后台Bean中的某个属性绑定,而这个属性的类型必须是该组件类型,按你这里的标签是<h:inputText />,对应的组件类型则是javax.faces.component.html.HtmlInputText。所以需要组件绑定的话,就必须在你的后台Bean里声明这样一个类型的属性,在标签里使用binding通过EL表达式将这个属性与页面组件进行绑定,绑定以后就意味着你可以直接在Bean里通过对该属性的引用来操作组件树上的这个组件。
value是值绑定,也是必须通过EL表达式进行绑定,这个才是你现在所理解的和需要的绑定,这个绑定才是将该组件得到的用户输入值和后台Bean的某个属性(比如name之类)进行绑定。
你这里根本没用到组件绑定,只有值绑定,所以正确写法应该是:
<h:inputText value="#{userBean.username}" maxlength="20"></h:inputText>
<br>
<h:inputText value="#{userBean.password}" maxlength="20"></h:inputText>
maxlength="20"></h:inputText>
<br>
<h:inputText binding="#{userBean.password}" value="password"
maxlength="20"></h:inputText>
上面是从你的代码里copy出来的,注意粗体部分。
jsf中的绑定有两种,一种是组件绑定,一种是值绑定。
binding是组件绑定,它是通过EL表达式和后台Bean中的某个属性绑定,而这个属性的类型必须是该组件类型,按你这里的标签是<h:inputText />,对应的组件类型则是javax.faces.component.html.HtmlInputText。所以需要组件绑定的话,就必须在你的后台Bean里声明这样一个类型的属性,在标签里使用binding通过EL表达式将这个属性与页面组件进行绑定,绑定以后就意味着你可以直接在Bean里通过对该属性的引用来操作组件树上的这个组件。
value是值绑定,也是必须通过EL表达式进行绑定,这个才是你现在所理解的和需要的绑定,这个绑定才是将该组件得到的用户输入值和后台Bean的某个属性(比如name之类)进行绑定。
你这里根本没用到组件绑定,只有值绑定,所以正确写法应该是:
<h:inputText value="#{userBean.username}" maxlength="20"></h:inputText>
<br>
<h:inputText value="#{userBean.password}" maxlength="20"></h:inputText>
- 浏览: 725 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
大家帮我看看,我的JSF程 ...
<h:inputText binding="#{userBean.user ...
-- by flydeer2003






评论排行榜