h: commandButton не работает-действие [дублировать]

На этот вопрос уже есть ответ здесь:

Я делаю приложение с помощью jsf, и у меня есть проблема при отправке данных из одной из строк datatable в боб, а затем перенаправить на другую страницу. Просто чтобы заявить, я использую bootsfaces. Вот коды:

страница JSF:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="/templates/layout.xhtml"    
    
    
    
    >
    <ui:define name="title">Home</ui:define>
    <ui:define name="content">
        <b:dataTable value="#{LeiloesMB.lista()}" var="l">
            <b:column>
                <f:facet name="header">
                    <h:outputText value="Leilao"/>
                </f:facet>
                <h:outputText value="#{l.leilao.id}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputText value="Encerramento"/>
                </f:facet>
                <h:outputText value="#{l.leilao.encerramento}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputText value="Item"/>
                </f:facet>
                <h:outputText value="#{l.item.nome}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputText value="Descrição"/>
                </f:facet>
                <h:outputText value="#{l.item.descricao}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputText value="Maior Lance"/>
                </f:facet>
                <h:outputText value="#{l.valor}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputLabel value="ID"/>
                </f:facet>
                <h:outputLabel value="#{l.usuario.id}"/>
            </b:column>

            <b:column>
                <f:facet name="header">
                    <h:outputLabel value="Nome"/>
                </f:facet>
                <h:outputLabel value="#{l.usuario.nome}"/>
            </b:column>            

            <b:column rendered="#{not empty Usuario.user.nome}">
                <f:facet name="header">
                    <h:outputLabel value="Realizar Lance"/>
                </f:facet>
                <h:form>
                    <h:commandButton value="Faça seu lance" action="#{LanceMB.lance(Usuario.user, l)}"/>
                </h:form>
            </b:column>

        </b:dataTable>
    </ui:define>
</ui:composition>

Код LanceMB:

@SessionScoped
@ManagedBean(name="LanceMB")
public class NovoLance {
    private Usuario user = new Usuario();
    private LancesLeilao ll = new LancesLeilao();
    private double novo_valor;


    public String lance(Usuario usuario, LancesLeilao lal){
        this.user = usuario;
        this.ll = lal;
        return "novolance";            
    }

    //getters.. setters
   }

Код Usuario:

@ManagedBean(name="Usuario")
@SessionScoped
public class UserSession {
    private String email, senha;
    private Usuario user = new Usuario();

//getters and setters..
}

Любой вопрос оставить комментарий.

1 ответ

  1. A <h:commandButton />используется для перемещения значений отдельных полей в форме к определенному управляемому компоненту. Я вижу, что вы вложили только кнопку в форму, но не сами значения.

    Оберните все значения в форме, включая кнопку, и попробуйте. Это должно работать, если все остальное было определено правильно.

    Надеюсь, это поможет 🙂