Jsf 如何动态添加输入字段

Jsf 如何动态添加输入字段,jsf,primefaces,Jsf,Primefaces,我想动态添加输入字段。像 PF中是否有关于如何添加此类组件的好组件 请给我一个你将如何发展它的提示,因为我目前没有线索 我真的很感激你的回答 我的技术堆栈: Hibernate:4.0.1.1最终版本 弹簧:3.1.1.释放 基本面:3.5 jsf版本:2.2.0-m08 PrimefacesMobile版本:0.9.3 ApacheTomcat/7.0.12 也许下面的代码可以帮助您解决问题,我恐怕没有一个组件(至少据我所知): HTML <h:form> <ui

我想动态添加输入字段。像

PF
中是否有关于如何添加此类组件的好组件

请给我一个你将如何发展它的提示,因为我目前没有线索

我真的很感激你的回答

我的技术堆栈:

  • Hibernate:4.0.1.1最终版本
  • 弹簧:3.1.1.释放
  • 基本面:3.5
  • jsf版本:2.2.0-m08
  • PrimefacesMobile版本:0.9.3
  • ApacheTomcat/7.0.12

也许下面的代码可以帮助您解决问题,我恐怕没有一个组件(至少据我所知):

HTML

<h:form>
    <ui:repeat value=#{bean.values} 
               var="value">
        <h:inputText value="#{value}" />
        <br />
    </ui:repeat>

    <h:commandButton value="Extend">
        <f:ajax listener="#{bean.extend}"
                process="@form" 
                render="@form" />
    </h:commandButton>
    <h:commandButton action="#{bean.submit}" 
                     value="Save" />
</h:form>


BEAN

@ManagedBean
@ViewScoped
public class Bean {
    private List<String> values;

    @PostConstruct
    public void init() {
        values = new ArrayList();
        values.add("");
    }

    public void submit() {
        // save values in database
    }

    public void extend() {
        values.add("");
    }

    public void setValues(List<String> values) {
        this.values = values;
    }

    public List<String> getValues() {
        return values;
    }
}
@ManagedBean
@视域
公共类Bean{
私有列表值;
@施工后
公共void init(){
值=新的ArrayList();
值。添加(“”);
}
公开作废提交(){
//在数据库中保存值
}
公共空间扩展(){
值。添加(“”);
}
公共void设置值(列表值){
这个值=值;
}
公共列表getValues(){
返回值;
}
}

也许下面的代码可以帮助您,我恐怕没有一个组件(至少据我所知):

HTML

<h:form>
    <ui:repeat value=#{bean.values} 
               var="value">
        <h:inputText value="#{value}" />
        <br />
    </ui:repeat>

    <h:commandButton value="Extend">
        <f:ajax listener="#{bean.extend}"
                process="@form" 
                render="@form" />
    </h:commandButton>
    <h:commandButton action="#{bean.submit}" 
                     value="Save" />
</h:form>


BEAN

@ManagedBean
@ViewScoped
public class Bean {
    private List<String> values;

    @PostConstruct
    public void init() {
        values = new ArrayList();
        values.add("");
    }

    public void submit() {
        // save values in database
    }

    public void extend() {
        values.add("");
    }

    public void setValues(List<String> values) {
        this.values = values;
    }

    public List<String> getValues() {
        return values;
    }
}
@ManagedBean
@视域
公共类Bean{
私有列表值;
@施工后
公共void init(){
值=新的ArrayList();
值。添加(“”);
}
公开作废提交(){
//在数据库中保存值
}
公共空间扩展(){
值。添加(“”);
}
公共void设置值(列表值){
这个值=值;
}
公共列表getValues(){
返回值;
}
}

再说一遍,您是如何做到这一点的?显示代码,而不仅仅是图像。此外,您的技术堆栈也无法帮助我们为您提供正确的方向。@maximus这里是一个简单的JSF 2.0示例,它可以根据您的需要进行修改。@AlexandreLavoie thx非常感谢您出色的回答!!!再说一次,你是如何做到这一点的?显示代码,而不仅仅是图像。此外,您的技术堆栈也无法帮助我们为您提供正确的方向。@maximus这里是一个简单的JSF 2.0示例,它可以根据您的需要进行修改。@AlexandreLavoie thx非常感谢您出色的回答!!!请参阅以了解在这种情况下使用
将是一个问题。相反,将其替换为
,以避免ajax渲染/更新问题。否则,请在发布之前测试您的答案。@LuiggiMendoza Good call,从一种情况开始,由于该阶段的原因,
是必要的。在这种情况下,
可以正常工作!关于测试,附近没有IDE。我尝试过这个,但是当你有一个列表时它不起作用。您无法更改列表上的字符串,因为它们是不可变的,因此新值不会到达支持bean。请参阅以了解在这种情况下使用
将是一个问题。相反,将其替换为
,以避免ajax渲染/更新问题。否则,请在发布之前测试您的答案。@LuiggiMendoza Good call,从一种情况开始,由于该阶段的原因,
是必要的。在这种情况下,
可以正常工作!关于测试,附近没有IDE。我尝试过这个,但是当你有一个列表时它不起作用。您不能更改列表上的字符串,因为它们是不可变的,所以新值不会到达支持bean。