我的HTML页面的字段值不会发送到我的托管bean。通过调用操作,值为null
。我的HTML代码是:
<form jsf:id="form">
<fieldset>
<label> <span
class="block input-icon input-icon-right"> <input
type="text" class="span12" placeholder="Usuário"
jsf:id="usr" jsf:value="#{loginBean.user}" />
<i class="icon-user"></i>
</span>
</label> <label> <span
class="block input-icon input-icon-right"> <input
type="password" class="span12" placeholder="Senha"
jsf:id="pwd" jsf:value="#{loginBean.password}" />
<i class="icon-lock"></i>
</span>
</label>
<div class="space"></div>
<div class="clearfix">
<button jsf:action="#{loginBean.doLogin()}" jsf:id="btn"
class="width-35 pull-right btn btn-small btn-primary">
<i class="icon-key"></i> Login
</button>
</div>
<div class="space-4"></div>
</fieldset>
</form>
我在syout
方法上放了LoginBean.doAction
,并为null
和user
属性打印password
。
我做错了吗?
答案 0 :(得分:1)
根据评论,您在URI xmlns:jsf
上根据旧的http://java.sun.com/jsf
主机声明了XML名称空间java.sun.com
。
这在较旧的Mojarra版本中存在错误。新的JSF 2.2特定功能,例如<f:viewAction>
和&#34; HTML5 friendly markup&#34;最初在XML名称空间中可用URI中的旧java.sun.com
主机,但仅在xmlns.jcp.org
主机上可用。这已在Mojarra 2.2.1-2.2.2中修复。
当您使用Java EE 7时,您应该放弃XML命名空间URI中的java.sun.com
主机并改为使用xmlns.jcp.org
。
<html ... xmlns:jsf="http://xmlns.jcp.org/jsf">
那就是说,发生这个错误也表明你正在使用一个相当古老的Mojarra版本。升级它是明智的。它目前已经处于2.2.9(这反过来又有一个尴尬的错误,即行号不包含在类文件中,所以你无法在IDE的调试器中逐步完成源代码如果这是强制性的,你最好选择2.2.8;这将在2.1.10中修复。