【问题标题】:<p:inputText> value not updated in model on change<p:inputText> 值在更改时未在模型中更新
【发布时间】:2013-09-10 07:16:32
【问题描述】:

我有一个表单,可以让我编辑 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 仍将具有旧值,即使我在网页上更改它也是如此。这是为什么呢?

【问题讨论】:

  • 请不要将 Stack Overflow 问题编辑器用作代码编辑器。在真正的编辑器中编辑(并测试!)它,然后复制粘贴未修改的代码。

标签: jsf primefaces in-place-editor


【解决方案1】:

这是因为p:inplace editor="true" 隐式将值提交给服务器,而&lt;p:inputText 没有隐式提交,

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

1) 添加&lt;p:commandButton 之类的提交按钮以提交来自p:inputText 的值

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

也可以看看展示柜p:ajax enables ajax features on supported components.

p.s,把p:inplace中的value属性去掉(p:inplace中没有这个属性)

【讨论】:

  • 非常感谢,ajax 事件成功了。我在输入问题时混淆了值和标签,幸运的是我在我的实际代码中做到了。
  • 您的链接“p:ajax 在任何 JSF 组件上启用 ajax 行为”指的是不存在的页面。请改一下
【解决方案2】:

让我们给你的组件ids:

<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 Documentation 3.5,组件p:inplace没有名为value的属性。

  2. 在更改first 的值时是否提交表单someForm?否则来自first 的更新值将不会传递给MyControllerMyBeanp:inplace 会自动提交值,如果您使用标准 p:inputText,您必须自己完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多