托管bean中的输入值未更新

时间:2015-01-08 12:37:49

标签: html5 jsf jsf-2.2

我的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,并为nulluser属性打印password

我做错了吗?

1 个答案:

答案 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中修复。