0

我不得不说,我不确定这是一个问题,但我认为是的。我有一个从哪里是两个提交按钮。第一个我通过序列号获取产品信息,两个我再次提交整个表格。

搜索按钮和代码:

按钮 1

<p:column><h:outputLabel value="#{bundle.newRma_label_sarjanumero}" for="sarjanro" /></p:column>
                <p:column><p:inputText id="sarjanro" value="#{MainController.selected.sarjanro}" style="width: 200px;" /></p:column>
                <p:column><p:commandButton icon="ui-icon-search"
                                           action="#{MainController.haeTiedotSarjanrolla}" style="width: 100px;" update=":messagePanel"/></p:column>

 //Fetching product info with serial number
public String haeTiedotSarjanrolla() {
    log.info("sarjanro=" + current.getSarjanro());
    Sarjanumerot s = null;

    s = helper.getSerialInfo(current.getSarjanro());
    if (s != null) {
        current.setAn8(s.getAn8());
        current.setDsc1(s.getDsc1());
        current.setDsc2(s.getDsc2());
        current.setSarjanro(s.getId().getLotn());
        current.setTuotenro(s.getId().getLitm());
    }

    // Back to same page!
    return "newRma";
}

另一个按钮(保存)

<p:column><p:commandButton action="#{MainController.talletaUusiRma}" value="#{bundle.newRma_tallenna}" immediate="true" style="width: 220px;"/></p:column>

保存(按钮 2)正在工作,但请求为空,没有任何数据。我试图这样检查它,它总是为NULL:

第一次提交后未填充的另一个字段:

<p:row>
            <p:column></p:column>
            <p:column><p:outputLabel value="#{bundle.newRma_shortdesc}" for="shortdesc"/></p:column>
            <p:column><p:inputTextarea rows="4" cols="30" id="shortdesc" value="#{MainController.selected.shortdesc}" style="width: 200px;"/></p:column>

        </p:row>

Map<String, String> parameterMap = (Map<String, String>) FacesContext.getCurrentInstance()
                     .getExternalContext().getRequestParameterMap();
    String temp = parameterMap.get("shortdesc");

temp 始终为 NULL!

有没有用 primefaces、ajax、js 或其他东西处理这个问题的最佳实践?

谢谢!萨米人

4

1 回答 1

2

这仅在 bean 是@ViewScoped并且您从操作方法返回null或返回时才有效。void

如果返回非nullor void,如下

// Back to same page!
return "newRma";

然后将创建一个全新的视图范围 bean 实例,从而丢弃最初的实例。

此外,我不确定您为什么immediate="true"在第二个按钮上使用,这没有任何意义,但是您是否知道这样非immediate输入的数据根本不会被处理,因此您应该使用以前的不immediate提交?

顺便说一句,您收集提交数据的方式也没有任何意义。您不需要遍历请求参数映射(顺便说一下,您使用了无效的参数名称)。只需直接访问绑定到输入值的 bean 属性。

于 2012-11-08T13:26:13.337 回答