小编Nic*_*rot的帖子

Java默认方法比相同的代码慢,但在抽象类中

我有一个界面PackedObject:

public interface PackedObject {
    int get();
    int sum();
    void setIndex(int index);
    default int defaultSum() {
        return get();
    }
}
Run Code Online (Sandbox Code Playgroud)

抽象类AbstractPackedObject:

public abstract class AbstractPackedObject implements PackedObject {
    protected int index = 0;
    protected int[] buffer;

    public void setIndex(int index) {
        this.index = index;
    }

    public void setBuffer(int[] buffer) {
        this.buffer = buffer;
    }

    @Override
    public int sum(){
        return get();
    }
}
Run Code Online (Sandbox Code Playgroud)

并具体实施WrappedPackedObject:

public class WrappedPackedObject extends AbstractPackedObject implements PackedObject {

    public WrappedPackedObject(int[] buffer) …
Run Code Online (Sandbox Code Playgroud)

java performance java-8

20
推荐指数
1
解决办法
908
查看次数

提交2个表单时,JSF ViewState未更新

我对JSF 2有一个问题.我使用Mojarra 2.1.14和Primefaces 3.1.4

我有一个包含2种形式的页面:formAformB.这两个表单在隐藏的输入字段中包含每个ViewState.

<h:form id="formA" binding="#{sessionBean.formA}">
    <h:commandButton value="formA" action="#{sessionBean.actionA}">
        <f:ajax/>
    </h:commandButton>
</h:form>

<h:form id="formB" binding="#{sessionBean.formB}">
    <h:commandButton value="formB" action="#{sessionBean.actionB}">
        <f:ajax/>
    </h:commandButton>
</h:form>
Run Code Online (Sandbox Code Playgroud)

用户使用Ajax操作提交formA.在Java操作中,我明确更新了formAformB(绑定了).

public void actionA(){
    FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(formA.getClientId());
    FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(formB.getClientId());
    System.out.println("action A!!");
}

public void actionB(){
    System.out.println("action B!!");
}
Run Code Online (Sandbox Code Playgroud)

在Ajax响应中,有formAformB(元素)和ViewState 的HTML代码.

JSF更新formAformB的HTML 并设置调用表单的ViewState:formA. formB不包含任何ViewState.

用户使用Ajax操作提交formB.由于未定义ViewState,因此在RESTORE阶段将postBack设置为false并将renderResponse设置为true,跳过INVOKE APPLICATION阶段:不调用该操作.更新响应VIEW_STATE后,如果用户sumbit为formB,则调用该操作.

它是JSF 2的bug还是限制?或者我做错了什么?

你可以在GitHub上找到maven projet:https: //github.com/nithril/jsf-multiple-form

在此先感谢您的帮助!

primefaces jsf-2 mojarra

5
推荐指数
1
解决办法
3345
查看次数

标签 统计

java ×1

java-8 ×1

jsf-2 ×1

mojarra ×1

performance ×1

primefaces ×1