禁用JavaServer Faces中的项目

时间:2014-03-19 15:24:48

标签: jsf disabled-control

我是JavaServer Faces的新手。 我有一个简单的形式:

<div id="respond" class="comment-respond">
    <h3 id="reply-title" class="comment-reply-title">#{msgs.leavereply}</h3>
    <h1>#{!forumsBean.activeWithProject}</h1>
    <h:form>
        <h:inputTextarea value="#{forumpostsBean.text}" style="resize:none"/>
        <h:commandButton value="#{msgs.add}" action="#{forumpostsBean.addForumpost}"/>
    </h:form>
</div>

单击命令按钮,一切正常,执行方法forumpostsBean.addForumpost。

但是当我修改代码时:

<div id="respond" class="comment-respond">
    <h3 id="reply-title" class="comment-reply-title">#{msgs.leavereply}</h3>
    <h1>#{!forumsBean.activeWithProject}</h1>
    <h:form>
        <h:inputTextarea value="#{forumpostsBean.text}" style="resize:none" disabled="#{not forumsBean.active}"/>
        <h:commandButton value="#{msgs.add}" action="#{forumpostsBean.addForumpost}" disabled="#{not forumsBean.active}"/>
    </h:form>
</div>

如果未禁用项目,则只刷新当前页面,但不执行forumpostsBean.addForumpost方法。

在两种变体中,<h1>#{!forumsBean.activeWithProject}</h1>都显示正确的值。

1 个答案:

答案 0 :(得分:0)

你有2个豆子吗?一个叫做forumpostsBean而另一个只是forumsBean?我不知道你是否得到了它们但可能是它的主要错误?正如上面的评论所说,也许你的逻辑不合适。

您可能想要使用render =&#34;&#34;在按钮而不是只是禁用它所以它在页面加载时根本不是dom的一部分,然后当你在输入字段中键入数据时使用ajax调用来做部分ajax再次渲染div并显示它。适合测试。

相关问题