【问题标题】:jsf inputtext to beanjsf输入文本到bean
【发布时间】:2012-12-16 01:49:26
【问题描述】:

在我的 JSF 应用程序中,我有一个包含多个 inputtext 组件的页面。显示页面时,这些 inputtext 组件将填充数据库中的数据。当我点击提交按钮时,我想将这些值作为参数传递给下一个 facelet。

发生的情况是,当我点击提交时,传递的是旧值,而不是用户输入的更新值。这是 inputtext 组件之一的样子:

            <div align="center">
              <h:outputLabel value="Product Quantity " />
              <h:inputText id="quantity" value="#{product.quantity}" />
           </div>

然后,在提交按钮中,我试图获取用户输入的值:

                <h:button value="Save Edits" outcome="welcome">
                  <f:param name="quantity" value="#{product.quantity}" />                    
                </h:button>

假设 100 是该字段填充的原始数量。当用户将其更改为 110 并点击提交时,欢迎 facelet 仍然认为 100 是值。有什么想法吗?

【问题讨论】:

  • 您必须使用h:commandButton 而不是普通的h:button,这应该可以解决!

标签: jsf


【解决方案1】:

您决定使用&lt;h:button/&gt; 而不是&lt;h:commandButton/&gt; 有什么特别的原因吗?因为这就是你的参数没有进入下一页的原因

&lt;h:commandButton/&gt; 处理它包含在&lt;h:form/&gt; 中,在 POST 请求中将其内容提交给服务器(并且 JSF 处理生命周期开始等),而 &lt;h:button/&gt; 将生成一个 GET 请求。 &lt;h:button/&gt; 一般用于导航。如果您想做的不仅仅是导航,请坚持&lt;h:commandButton/&gt;

【讨论】:

  • 就像边栏一样,我的应用程序中有一个 Product bean 和一个 ProductList bean。 ProductList 只有一个 ArrayList。我有应用程序设置只允许用户将产品添加到数据库中,并且我正在尝试在表格中显示它们。这些项目在数据库中,我可以看到它们,但由于某种原因,表格显示 2 个 int 值的值为 0,构成 Product 对象的 2 个字符串显示为空白,这让我相信 Products 正在被覆盖?它与范围有什么关系吗?
  • @user1154644 如果没有看到代码,很难确定发生了什么,但是是的,支持 bean 的作用域可能是原因。您是说数据表中显示了两个空白行?
  • 嗯,产品的属性是 int、string、string、int。该表显示 int 列的 0 和 2 个字符串列的空白。你有什么可以建议的吗?我认为现在 ProuctList 和 Product bean 没有任何范围注释,但我不知道是否应该使它们成为应用程序或视图范围。这只是一个几乎完成的学校作业,这是我唯一想不通的事情。产品列表是我正在迭代以显示表格的内容。
  • @user1154644,你需要在这里放一些代码(在另一个问题中)。猜测不会解决它
  • 肯定会开始一个新问题
猜你喜欢
  • 2014-03-20
  • 1970-01-01
  • 2013-02-04
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2013-06-25
  • 2012-08-10
相关资源
最近更新 更多