【问题标题】:multiple forms on page submitting to first form?页面上的多个表单提交到第一个表单?
【发布时间】:2014-11-10 03:11:32
【问题描述】:

我在一个页面中有三个表单,每个表单调用一个不同的支持 bean,但是当我使用第一个表单以外的表单时,调用对第一个表单进行了三次,每个表单都保存在 DB.Table 和持久性中当我单击命令按钮时正在执行三遍,这是不好的做法还是我的代码中缺少某些内容?

    <h:form id="ciclista-form" >            
        <div id="ciclista-link"><h1>Crear Ciclista</h1></div>
             // inputTexts ...  ..  .
        <h:commandButton action="#{ciclistaBean.guardarCiclista()}" value="Guardar Ciclista"  class="ciclista-form-btn"/>   
    </h:form>       
    <h:form id="Etapa-form" >    Etapa-form              -->
        <div id="Etapa-link"><h1>Crear Etapa</h1></div> -->
             //  input texts . ..  
        <h:commandButton action="#{etapaBean.guardarEtapa()}" value="Guardar Etapa"  class="carrera-form-btn"/>  -->
    </h:form>  Etapa-form -->

    <h:form id="carrera-form" >    <!-- carrera-form -->                
        <div id="carrera-link"><h1>Crear carrera</h1></div>
             //   input texts . . . 
        <h:commandButton action="#{carreraBean.guardarCarrera()}" value="Guardar Carrera"  class="etapa-form-btn" />
    </h:form>  <!-- carrera-form -->

所有调用都转到第一种形式,这是为什么呢?

【问题讨论】:

    标签: forms jsf


    【解决方案1】:

    你显示的截图看起来不错,你的豆子是什么类型的?他们有什么范围?他们是否依赖于另一个人?

    我尝试使用以下代码遵循您的想法,它适用于我的设置...

    <h:body>
        <h:form id="ciclista-form">
            <div id="ciclista-link">
                <h1>Crear Ciclista</h1>
                <h:inputText value="#{ciclistaBean.text}"/>
            </div>
            <h:commandButton action="#{ciclistaBean.guardarCiclista()}" value="Guardar Ciclista" class="ciclista-form-btn" />
        </h:form>
        <h:form id="Etapa-form">
            <div id="Etapa-link">
                <h1>Crear Etapa</h1>
                <h:inputText value="#{etapaBean.text}"/>
            </div>
            <h:commandButton action="#{etapaBean.guardarEtapa()}" value="Guardar Etapa" class="carrera-form-btn" />
        </h:form>
        <h:form id="carrera-form">
            <div id="carrera-link">
                <h1>Crear carrera</h1>
                <h:inputText value="#{carreraBean.text}"/>
            </div>
            <h:commandButton action="#{carreraBean.guardarCarrera()}" value="Guardar Carrera" class="etapa-form-btn" />
        </h:form>
    </h:body>
    

    三个独立的@RequestScoped beans

    @ManagedBean(name = "ciclistaBean")
    @RequestScoped
    public class SO26836137_F1 {
        private String text;    
        public void guardarCiclista() {
            System.out.println("Form 1 submitted: " + text);
        }   
        public String getText() {
            return text;
        }   
        public void setText(String text) {
            this.text = text;
        }
    }
    
    
    @ManagedBean(name = "etapaBean")
    @RequestScoped
    public class SO26836137_F2 {
        private String text;
        public void guardarEtapa() {
            System.out.println("Form 2 submitted: " + text);
        }
        public String getText() {
            return text;
        }
        public void setText(String text) {
            this.text = text;
        }
    }
    
    
    @ManagedBean(name = "carreraBean")
    @RequestScoped
    public class SO26836137_F3 {
        private String text;
        public void guardarCarrera() {
            System.out.println("Form 3 submitted: " + text);
        }
        public String getText() {
            return text;
        }
        public void setText(String text) {
            this.text = text;
        }
    }
    

    【讨论】:

    • 他们是@SessionScoped
    • 这并没有什么不同。 bean之间的依赖关系呢?例如遗传?
    • 不是所有的豆子都完全不同
    • 没有看到代码很难猜...我会检查 1)yout html-page 的源代码:是否有三种形式? 2)确保您的表格没有嵌套在其他表格中! 3) 嗅探流量:你在浏览器中看到提交正确的表单了吗(F12)。 4) 调试jsf-lifecyclebalusc.blogspot.de/2006/09/debug-jsf-lifecycle.html
    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多