我有一个必须能够执行以下操作的Web程序:
用户将编写一条将发送给许多目标的消息。在这种情况下,用户必须能够在他的消息中插入可变数据。例如:
亲爱的$ {strName}生日快乐!
在这种情况下,用户将有一个inputtext字段来编写消息,下拉菜单中包含预先确定的字符串(名称,年龄,性别等),然后通过命令按钮传递给inputtext领域。然后程序如何读取这些子串并将它们转换为可变数据并不重要,我已经想到了。
我的问题是我不知道如何将下拉列表中的值插入到inputtex表单中。有任何想法吗?我将提供一个关于我的表单形状的样本。
XHTML:
<div class="col-md-3">
<label style="padding-top:5px">Dados variaveis:</label><br/>
<p:selectOneMenu value ="#{sistemaDeAvisos.buscaAlvosDB.variavel}" onchange="submit()">
<f:selectItems value="#{sistemaDeAvisos.buscaAlvosDB.alvosTestesDropdown}"/>
</p:selectOneMenu>
<p:commandButton value="Submit"/>
</div>
</div>
<div class="row" style="margin-left: 5px;margin-right: 5px">
<div class="col-md-12">
<div class="form-group">
<label for="strMensagem">
Mensagem(*):
</label>
<h:inputTextarea value="#{sistemaDeAvisos.mensagem.strMensagem}" id="strMensagem" style="width:100%;min-height:200px"/>
</div>
</div>
支持Bean
public class BuscaAlvosDB {
private EntityManager em = Conexao.getInstancia().getConexaoMysql();
private ArrayList<AlvoCampanhaBean> alvosCampanhaList = new ArrayList();
private String variavel;
private List <String> alvosTestesDropdown = new ArrayList();
public void carregaAlvos() {
//Dropdown Field List
alvosTestesDropdown.add("strName");
alvosTestesDropdown.add("strID");
alvosTestesDropdown.add("strPhoneNumber");
alvosTestesDropdown.add("strEmail");
}
}
处理更新的方法
public void handleEvent(){
StringBuilder strBuilder = new StringBuilder(mensagem.getStrMensagem());
strBuilder.append(variavel);
mensagem.setStrMensagem(strBuilder.toString());
System.out.println(mensagem.getStrMensagem());
System.out.println(strBuilder.toString());
}
答案 0 :(得分:0)
根据我们的评论,您可以将JSF代码包装在一个独立的<h:form />
标记中,并使用AJAX将表单发送到您的bean,然后更新您的textarea的内容。这就是我的想法:
<h:form prependId="false" id="form">
<h:selectOneMenu id="sel" label="Name: " value="#{testBean.selectValue}">
<f:selectItem itemLabel="Choose" itemValue="" />
<f:selectItem itemLabel="Joe" itemValue="Joe" />
<f:selectItem itemLabel="Amy" itemValue="Amy" />
</h:selectOneMenu>
<h:commandButton type="button" value="Submit" id="btn" action="#{testBean.updateTextarea}">
<!-- This sends the form with the "onclick" event to the backing bean to update the bean attributes, and then it updates the textarea -->
<f:ajax execute="@form" event="click" render="txt" />
</h:commandButton>
<h:inputTextarea value="#{testBean.textareaValue}" id="txt" />
</h:form>
在你的支持bean中,你可以创建一个简单的方法,将textarea消息与select中选择的值连接起来。像这样:
//. . .
private String selectValue;
private String textareaValue;
// getter and setter
public void updateTextarea() {
setTextareaValue("Dear " + getSelectValue() + " happy birthday!");
}
//. . .
尝试一下,如果您需要别的东西,请告诉我。