PrimeFace+JSF实际工作需要点击一个树将关联的文本添加到inputTextarea文本框,inputTextarea允许用户随意更改,ajax绑定树的select事件,但点击时,后台Bean对象无法实时获取前台文本框改变的实际内容。
解决方案:
添加一个按钮和文本框鼠标事件,事件JS调用按钮click事件,由按钮将文件夹数据同步到后台。
<script> functioncallButton(){ document.getElementById("first:tj").click(); } </script> <h:form> <h:inputHiddenvalue="#{inputRule.init}"/> </h:form> <h:formid="first"> <h:panelGrid> <p:inputTextarearows="5"cols="50"id="bigout"value="#{inputRule.text}"onmouSEOut="callButton()"> </p:inputTextarea> <p:treevalue="#{inputRule.sgnrRoot}"var="node"selection="#{inputRule.sgnrNode}"selectionMode="single"style="width:215px;height:150px;border:0;"> <p:treeNodeexpandedIcon="ui-icon-folder-open"collapsedIcon="ui-icon-folder-collapsed"> <h:outputTextvalue="#{node}"style="display:none;"/> <h:outputTextvalue="#{node}"/> </p:treeNode> <p:ajaxevent="select"listener="#{inputRule.addInputString}"update="@form"/> </p:tree> <p:commandButtonvalue="提交"id="tj"style="display:none"> </p:commandButton> </h:panelGrid> </h:form>
@ManagedBean(name="inputRule") @SessionScoped publicclassInputRuleimplementsSerializable{ //施工常用语tree操作定义区 privateTreeNodesgnrRoot;//施工内容root privateTreeNodesgnrNode;//选择某条内容常用语 privateList<String>nrcyyList=newArrayList<String>();//内容常用语所有对象 publicStringgetInit(){ sgnrRoot=newDefaultTreeNode("Root",null); nrcyyList.clear(); nrcyyList.add("a"); for(Stringstr:nrcyyList){ TreeNodesgxm=newDefaultTreeNode(str,sgnrRoot); } returnnull; } privateStringtext=""; publicStringgetText(){ returntext; } publicvoidsetText(Stringtext){ this.text=text; } publicvoidaddInputString(){ text+="测试1,"; } publicvoidgetInputString(){ Stringa=text; } }原文链接:https://www.f2er.com/ajax/162965.html