【问题标题】:Updating an input text field to in turn update a text on Primefaces editor更新输入文本字段以依次更新 Primefaces 编辑器上的文本
【发布时间】:2021-03-19 12:07:04
【问题描述】:

大家好, 我有一个关于从输入文本字段更新 p:editor 中电子邮件的问候全名的小问题。在使用 id email_sender 更新我的 primefaces 输入文本字段后,我希望能够更改相关文本区域中的文本。

例如,我尝试了这些不起作用的方法:

包含输入文本字段和编辑器的对话框


                    <p:dialog header="Share Document via Email" widgetVar="newMailDlg"
                        modal="true" showEffect="slide" hideEffect="slide" height="800"
                        width="100%" id="newMailDlg">

                        <div class="form-group">
                            <div class="col-md-12">
                                <label for="inputName" class="col-sm-3 control-label"><h:outputText
                                        value="#{msg['email.sender']}:" /></label>
                                <div class="col-sm-6">
                                    <h:inputText styleClass="form-control input-sm"
                                        id="email_sender"
                                        value="#{EnquiryComponent.senderName}" maxlength="50"
                                        required="false" label="sender">
                                        
                                        <p:ajax event="blur" listener="#{EnquiryComponent.setRegards()}" 
                                         update="@([id$=email_content])" />
                                    


                                    </h:inputText>
                                </div>
                            </div>
                        </div>

                        

                        <div class="form-group">
                            <div class="col-md-12">
                                <label for="inputName" class="col-sm-2 control-label"><h:outputText
                                        value="#{msg['email.content']}:" /></label>
                                <div class="col-sm-12">
                                    <p:editor id="email_content" widgetVar="email"
                                        value="#{EnquiryComponent.blankEmail.content}" height="250" />
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-12">
                                <p:commandButton id="sendEmail" styleClass="green-btn"
                                    ajax="false" value="Send Mail"
                                    action="#{EnquiryComponent.saveEmail(EnquiryComponent.blankEmail, EnquiryComponent.task, true)}" />
                            </div>
                        </div>
                
                    </p:dialog>

我的支持 bean 用于更新包含我的电子邮件模板中的关键变量的映射

    public void setRegards() {
        logger.info("Changed recipient name to : " + senderName);
        emailModel.put("user", senderName);
    
        
    }

Bean 设置 P:editor 内容

public void onSendMail(String refNo, TreeNode treeNode) {
        ResourceBundle rb = ResourceBundle.getBundle("SIL-mail", Locale.getDefault());
        String sender = rb.getString("mail.default.from");
        blankEmail = new Email();
        task = null;
        blankEmail.setSender(sender);
        
        senderName= SilUtils.getUserObj().getFullUserName();
        
        listGlbAccessUsers = new ArrayList<>();
        listGlbAccessUsers=glbAccessUsersService.getDao().findAll();

        AlfDocument doc = (AlfDocument) treeNode.getData();
        // String link = previewDocument(doc);
        String link = generateAlfrescoEditURL(treeNode);
        link = link.split("&")[0];

        emailModel = new HashMap<>();
        emailModel.put("documentLink", link);
        emailModel.put("refNo", refNo);
        emailModel.put("task", "");
        emailModel.put("user", senderName);

        blankEmail.setContent(mailService.getMailContent("mail_acknowledge.vm", emailModel));

        SilUtils.showDialog("newMailDlg");
    }

【问题讨论】:

  • 您最好尝试使用 JavaScript 并使用输入文本 onchange 中的 JS 代码更新 p:editor 内容。
  • @Melloware 感谢您的输入。你能帮我写JS部分吗?我没有做过太多的JS。谢谢。
  • 对不起,我没有那么多时间投入,但这对你来说是一个很好的学习机会!

标签: javascript java html primefaces


【解决方案1】:

您应该使用带有 ajax 的命令按钮。 试试这个:

  <p:commandButton id="sendEmail" styleClass="green-btn"
                                process="@this" value="Send Mail"
                                action="#{EnquiryComponent.saveEmail(EnquiryComponent.blankEmail, EnquiryComponent.task, true)}" update="email_content" />

如果你点击按钮,现在它可以更新 email_content。

享受吧,里卡多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多