繁体   English   中英

<p:inputText>更改后模型中的值未更新

[英]<p:inputText> value not updated in model on change

我有一个表格,可让我使用可以在各个bean之间切换的按钮来编辑一个bean列表(一次一个)。

保持简单:

public class MyBean {
   private String text;
}

public class MyController {
   private List<MyBean> availableBeans = new ArrayList<MyBean>(); // has five MyBeans with random text
   private MyBean selectedBean; // initialized with first element of list

   private int index = 0;

   public void nextBean() { index++; }
   public void previousBean() { index--; }

   private void refreshBean() { selectedBean = availableBeans.get(index); }
}

对于html部分,我有类似

<h:form id="someForm">
   <!-- stuff -->

    <p:inputText value="#{myController.selectedBean.text}" />

    <p:inplace editor="true" label="#{myController.selectedBean.text}" >
        <p:inputText value="#{myController.selectedBean.text}" />
    </p:inplace>

   <!-- more stuff-->
</h:form>

如果我更改了inplace标记内的文本,则可以很好地更新myBean中的变量,但是,如果我仅使用inputText,即使我在网页上进行了更改,bean仍将具有旧值。 这是为什么?

这是因为p:inplace editor="true"隐式将值提交给服务器,而<p:inputText不隐式地将值提交给服务器,

您可以通过多种方式解决它

1)添加<p:commandButton类的提交按钮,以从p:inputText提交值

2)在p:inputText内部使用p:ajax event="keyup"event="change"

还可以看一下展示柜p:ajax在支持的组件上启用ajax功能。

PS,删除value从属性p:inplace (存在没有这样的属性p:inplace

让我们给您的组件id

<h:form id="someForm">
  <p:inputText id="first" value="#{myController.selectedBean.text}" />
  <p:inplace id="second" editor="true" value="#{myController.selectedBean.text}">
    <p:inputText id="third" value="#{myController.selectedBean.text}" />
  </p:inplace>
</h:form>
  1. 根据Primefaces文档3.5 ,组件p:inplace inplace没有名为value属性。

  2. 更改first的值时,是否提交someForm表单? 否则,从first的更新值将不会传递给MyControllerMyBean p:inplace自动提交值,因此您必须使用标准p:inputText自己进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM