【问题标题】:Getting value from dynamically created inputText从动态创建的 inputText 中获取价值
【发布时间】:2013-12-31 11:05:09
【问题描述】:

以下是我的 abc.xhtml 页面中的代码 sn-p :

<p:panelGrid id="pnlGrd_numOfLbl"
  style="align:center; width:100%;" cellpadding="5">
<c:forEach var="i" begin="1" end="${specificationMB.numOfLbl}" >
<p:row>
    <p:column width="50%">
        <p:outputLabel value="Label ${i}" />
    </p:column>
    <p:column width="50%">
        <p:inputText id="inputTxt_${i}" style="width:150px;" />
    </p:column>
</p:row>
</c:forEach>
</panelGrid>

这是我的 panelGrid 我根据动态生成 inputText numOfLable。生成后说 2 将生成用户将添加一些 每个 inputText 的文本,所以我的问题是如何动态获得价值 生成的输入框。

谢谢。

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    这可以通过 JSF 和 primefaces 的基础知识轻松完成。这是完整的工作示例:

    XHTML 文件(我正在使用 p:panel 和 ui:repeater)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    <f:view contentType="text/html">
    
        <h:head>
            <link rel=" stylesheet" type="text/css" href="css/style.css"></link>
    
        </h:head>
    
        <h:body>
            <h:form>
                <p:panel header="Panel">
    
                    <ui:repeat var="lbl" value="#{tBean.lblClassess}">
                        <p:row>
                            <p:column width="50%">
                                <p:outputLabel value="#{lbl.lbl} :" />
                            </p:column>
                            <p:column width="50%">
                                <p:inputText value="#{lbl.value}" />
                            </p:column>
                        </p:row>
                    </ui:repeat>
    
                </p:panel>
    
                <p:commandButton actionListener="#{tBean.submit}" value="Subtmi" update="values"></p:commandButton>
    
                <p:outputPanel id="values">
    
                    <ui:repeat var="lbl" value="#{tBean.lblClassess}">
                        <p:row>
                            <p:column width="50%">
                                <p:outputLabel value="#{lbl.value} :" />
                            </p:column>
    
                        </p:row>
                    </ui:repeat>
    
                </p:outputPanel>
    
            </h:form>
        </h:body>
    </f:view>
    <body>
    
    </body>
    
    </html>
    

    托管 Bean

    import java.util.ArrayList;
    import java.util.List;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    import javax.faces.event.ActionEvent;
    
    @ManagedBean(name = "tBean")
    @ViewScoped
    public class TestBean {
    
        private List<LabelClass> lblClassess;
    
        public TestBean() {
            lblClassess = new ArrayList<LabelClass>();
            lblClassess.add(new LabelClass("First Label", ""));
            lblClassess.add(new LabelClass("Second Label", ""));
            lblClassess.add(new LabelClass("Third Label", ""));
    
        }
    
        public void submit(ActionEvent e) {
            for (LabelClass lbl : lblClassess) {
                System.out.println(lbl.getValue());
            }
        }
    
        public List<LabelClass> getLblClassess() {
            return lblClassess;
        }
    
        public void setLblClassess(List<LabelClass> lblClassess) {
            this.lblClassess = lblClassess;
        }
    
    }
    

    标签类

    public class LabelClass {
        private String lbl;
        private String value;
    
        public LabelClass(String lbl, String value) {
            super();
            this.lbl = lbl;
            this.value = value;
        }
    
        public String getLbl() {
            return lbl;
        }
    
        public void setLbl(String lbl) {
            this.lbl = lbl;
        }
    
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    
    }
    

    输出

    【讨论】:

    • 我建议使用 CDI bean 而不是 JSF 托管 bean。 CDI 更灵活,功能也更多。
    • 这个回答是基于用户的问题
    【解决方案2】:

    为了获取您动态生成的 inputTexts 的值。你可以这样做。

    <input type="text" id="inputTxt_${i}" name="inputTxt_${i}" style="width:150px;" />
    

    然后在 servlet 中使用此代码检索文本值

    String inputText1 = request.getParameter("nameOfFirstInputText");
    

    【讨论】:

    • 嗨 Qadir 感谢 rply 。您建议我使用 但我想使用 primefaces inputText 组件。
    【解决方案3】:

    您可以将值绑定到 bean 值对象中:

    <input type="text" id="inputTxt_${i}" value="${specificationMB.getValue(i).value}"  />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多