gpt4 book ai didi

java - 为 JSF 元素设置正确的值

转载 作者:行者123 更新时间:2023-11-30 04:23:05 28 4
gpt4 key购买 nike

我正在尝试从 Java Bean 访问 JSF 元素,以便我可以在我的应用程序中使用它,但我需要从 textarea 发送文本。到 <f:setPropertyActionListener />问题是我不知道怎么告诉<f:setPropertyActionListener />获取 `textarea 值

我确信这是一个小语法错误,但我看不到它 U__U

这是一段代码,如果您告诉我在将来的情况下如何执行此操作,我将非常感激,因为我需要它;)

<h:form>
<h:dataTable var="answer" value="#{AnswerController.answer}">
<h:column>
#{msgs.newAnswer}<br/>
<h:inputTextarea id="textanswer" name="text" rows="5" cols="20" /> <br/>
<h:commandButton value="#{msgs.aceptButton}" type="submit" action="#{AnswerController.newAnswer(answer)}" immediate="true">
<f:setPropertyActionListener target="#{AnswerController.currentAnswer}"
value="textanswer" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>

最佳答案

关于<f:setPropertyActionListener>的使用kolossus 是对的:如果您使用 EL 2.2,能够调用带参数的方法,则没有必要。否则,该标签可用于识别按下了哪个命令按钮,以及最终应该在要操作的 bean 中出现哪个答案。

就您的情况而言,我可以看到两个用例,下面对此进行了描述。

仅提交一个答案

在这种情况下,每次数据迭代您应该使用一种表单,以便只有一个答案到达服务器。将kolossus的注释放入代码中,我们有:

<h:dataTable var="answer" value="#{bean.answers}">
<h:column>
<h:form>
#{msgs.newAnswer}<br/>
<h:inputTextarea id="textanswer" value="#{bean.currentAnswer}" rows="5" cols="20" /> <br/>
<h:commandButton value="#{msgs.aceptButton}" action="#{bean.newAnswer}" />
</h:form>
</h:column>
</h:dataTable>

使用此代码,bean 的一个字符串属性就足够了,并且它将在监听器方法中可用:

private String currentAnswer;//getter+setter

提交所有答案

在这种情况下,每个数据表应该有一个表单,所有答案都将出现在支持 bean 的列表中:

<h:form>
<h:dataTable var="answer" value="#{bean.answers}">
<h:column>
#{msgs.newAnswer}<br/>
<h:inputTextarea id="textanswer" value="#{answer}" rows="5" cols="20" /> <br/>
</h:column>
</h:dataTable>
<h:commandButton value="#{msgs.aceptButton}" action="#{bean.newAnswers}" />
</h:form>

在这种情况下,将在表单提交期间填充字符串列表,并且所有答案都将在操作方法中可用:

List<String> answers;//getter+setter
<小时/>

带参数或 <f:setPropertyActionListener> 的方法调用用例

如您所见,上述两个设置中都没有使用它们。如果您想知道选择了哪个答案,则它们非常有用,以便可以操纵正确的答案。就像:

<h:dataTable var="answer" value="#{bean.answers}">
<h:column>
<h:form>
#{msgs.deleteAnswer}<br/>
<h:inputTextarea id="textanswer" value="#{answer}" rows="5" cols="20" /> <br/>
<h:commandButton value="#{msgs.deleteButton}" action="#{bean.deleteAnswer(answer)}" />
</h:form>
</h:column>
</h:dataTable>

或者在

<h:dataTable var="answer" value="#{bean.answers}">
<h:column>
<h:form>
#{msgs.deleteAnswer}<br/>
<h:inputTextarea id="textanswer" value="#{answer}" rows="5" cols="20" /> <br/>
<h:commandButton value="#{msgs.deleteButton}" action="#{bean.deleteAnswer(answer)}">
<f:setPropertyActionListener value="#{answer}" target="#{bean.currentAnswer}" />
</h:commandButton>
</h:form>
</h:column>
</h:dataTable>

在第一个示例中,与按钮单击关联的答案将作为方法参数提供,在第二个示例中,与按钮单击关联的答案将在调用操作方法之前设置为 bean 属性,并将作为 currentAnswer 提供。 bean 属性。

关于java - 为 JSF 元素设置正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com