Java 使用来自多个SelectOne菜单和按钮的内容填充InputExt区域

Java 使用来自多个SelectOne菜单和按钮的内容填充InputExt区域,java,jsf,jsf-2,Java,Jsf,Jsf 2,我想建立一个小的用户界面,让用户能够以一种更简单的方式编写一些数学公式(因此是用户界面),并能够将它们保存到一个.txt(或类似的)文件中 例如:我有3个选择框,提供各种选项,一些按钮表示数学运算和一个InputExtArea。到目前为止,我已经成功地从每个SelectOne菜单和一些inputText链接了选定的内容,并将它们与我需要的内容连接起来,并将创建的数学公式写入.txt文件 现在,我想让用户在编写公式时(通过选择内容并按下按钮)能够看到他正在编写的公式。到目前为止,我一直在尝试使用I

我想建立一个小的用户界面,让用户能够以一种更简单的方式编写一些数学公式(因此是用户界面),并能够将它们保存到一个.txt(或类似的)文件中

例如:我有3个选择框,提供各种选项,一些按钮表示数学运算和一个InputExtArea。到目前为止,我已经成功地从每个SelectOne菜单和一些inputText链接了选定的内容,并将它们与我需要的内容连接起来,并将创建的数学公式写入.txt文件

现在,我想让用户在编写公式时(通过选择内容并按下按钮)能够看到他正在编写的公式。到目前为止,我一直在尝试使用InputExtArea来实现这一点,但我能做到的最好的办法是将所选内容从一个SelectOne菜单传输到文本区域,之后,我将用户所做的每一个操作添加到文本区域的尝试都失败了(有人建议使用
,但我没有成功,我尝试将我用来填充菜单的所有bean合并到一个bean中,然后以某种方式从那里开始,但也没有成功)

到目前为止我一直在研究的JSF部件的一个示例,包括2个选择框和文本区域:




迄今为止的公式是:


物业1:

物业2:
任何帮助都将不胜感激


另外,我对JSF(大约2天前开始)非常陌生,所以我会很感激被指给我一些可能涉及这个或类似问题的文档。

你基本上滥用了这里的
valueChangeListener
。你对值的更改并不感兴趣(也就是说,您对新旧值都不感兴趣),您只对提交的值感兴趣。在JSF 1.x中,当您没有/不能/不会使用基于ajax的组件库时,这是允许的。有(相当复杂)用
valueChangeListener
解决您的特定问题的方法,但是在JSF 2.x中,内置ajax功能,这真的不能再这样做了。您应该使用
标记引入异步提交和部分更新

按如下方式重写您的视图:

公式名称:


迄今为止的公式是:

物业1:

物业2:
仅此而已。您的
#{output}
bean应该通过
@ViewScoped
放在视图范围内。不需要其他侦听器方法。只有当您希望在显示值之前对其进行操作时,才需要ajax侦听器。例如

公式名称:


迄今为止的公式是:

物业1:

物业2:
例如(这个启动示例对逗号进行了简单的连接,但是您可以完全自由地以您想要的方式构建
公式
值):


那些
valueChangeListener
s基本上都是黑客。您似乎对值更改不感兴趣,只对提交的值感兴趣。在发布答案之前,我想知道您使用的是JSF 1.x还是2.x。发布这两种侦听器方法也有助于了解您正试图通过输入和输出实现什么我使用的是JSF2.0。我在这台计算机上没有应用程序的最新版本(现在从笔记本上发布),但是侦听器方法看起来是这样的:public void propertyReferenceValueChanged(ValueChangeEvent e){propertyReferenceValue=e.getNewValue().toString();}另一位听众也很相似。希望我能把事情弄清楚一点。非常感谢你的帮助。明天的第一件事就是我要做必要的修改。因为这是你帮助我解决的第二个JSF问题,你能推荐一些好的阅读材料/教程吗我一直在做我能掌握的每一个教程(以及阅读其他人与JSF相关的问题),但这些都是很简单的。可能我从中得到最多的是。无论如何,再次感谢。Mkyong.com是一个很好的资源。但是这些文章的水平相当高,只展示了如何接近X,而不是为什么。也许你会发现我上一篇博文很有用:作为一个小的更新,你的建议很有效:)我只花了大约一个小时,因为我忘了将“”添加到JSF头部。再次感谢您。您应该使用
而不是
。然后它将被自动包含。
public void calculateFormula() {
    formula = propertyReferenceValue + ", " + property2ReferenceValue;
}