`
shrimpy
  • 浏览: 1525 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类

大家帮我看看,我的JSF程序为什么总是IllegalArgumentException

阅读更多
程序的环境
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程序,总是处处碰壁
  • JSFTest2.rar (59.9 KB)
  • 描述: 程序的代码,不过是去掉了lib,因为太大了
  • 下载次数: 12
分享到:
评论
1 楼 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>

相关推荐

Global site tag (gtag.js) - Google Analytics