【问题标题】:Text box Rendering in JSF 2.0JSF 2.0 中的文本框渲染
【发布时间】:2012-12-10 07:11:03
【问题描述】:

我有一个文本框,最终用户必须在其中输入应呈现的文本框的数量。根据输入的数字,文本框的数量必须以行格式动态呈现。

此外,在新呈现的行格式文本框中,输入的值必须在进入下一页时使用正确的支持 bean 进行标识。

关于从哪里开始或如何实现类似目标的任何建议?

【问题讨论】:

    标签: ajax jsf jsf-2 facelets


    【解决方案1】:

    您可以使用<h:inputText> 询问最终用户的输入。

    <h:inputText value="#{bean.number}" />
    

    您可以使用&lt;h:commandButton&gt; 让用户提交表单。

    <h:commandButton value="Submit" action="#{bean.submit}" />
    

    您可以使用List&lt;T&gt; 来收集项目。

    private List<Item> items;
    
    public void submit() {
        items = new ArrayList<Item>();
    
        for (int i = 0; i < number; i++) {
            items.add(new Item());
        }
    }
    

    您可以使用&lt;h:dataTable&gt; 将其呈现在行中。

    <h:dataTable value="#{bean.items}" var="item">
        <h:column>
            <h:inputText value="#{item.value}" />
        </h:column>
    </h:dataTable>
    

    提交的值将在items 中结束。

    【讨论】:

    • 你的答案很好,但是假设如果最终用户想要动态呈现 5 个文本框,当时如何为 绑定值>.
    • 呃,答案已经表明了这一点。输入值绑定到迭代项。
    • 为什么我得到这个:“value="#{item.value}": Target Unreachable, identifier 'item' resolve to null”错误。
    • 它是由答案中提供的代码以外的其他地方引起的(换句话说:您没有使用答案中提供的确切代码,或者您在没有真正了解您的情况下对其进行了太多修改'重新做)。按而不是为此劫持别人的问题。
    • 感谢@BalusC。假设不提交页面,使用 Ajax 我需要在输入输入数字后呈现新的文本框。我猜我们可以使用 f:ajax 监听器属性,但是如何在不提交页面的情况下设置 bean number 属性?
    猜你喜欢
    • 2012-04-01
    • 2011-12-12
    • 2012-01-01
    • 2011-10-28
    • 2023-03-25
    • 2011-08-22
    • 1970-01-01
    • 2016-06-24
    • 2012-05-29
    相关资源
    最近更新 更多