gpt4 book ai didi

java - 从 JSF 页面调用 void 方法

转载 作者:行者123 更新时间:2023-12-02 06:02:58 25 4
gpt4 key购买 nike

我正在尝试实现一个页面,用户在其中输入电子邮件地址、主题和消息,然后在发送按钮上,消息与附件一起发送。看来我的主要问题是调用 CommandButton 来执行发送消息的 Void 类。这是我的 xhtml 页面:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="./fros3.xhtml">
<ui:define name="top">
</ui:define>
<ui:define name="content">
</ui:define>
<ui:define name="bottom">
<h:form>
<p:growl id="msg" showDetail="true" sticky="true" />
<p:panel header="Email ScreenShot" style=" width: 50%">
<h:panelGrid columns="2">
<h:outputLabel value="E-mail address:" styleClass="requiredLbl" />
<p:inputText value="#{sendscreen.email}"
id="username" required="true" label="username" />
<h:outputLabel value="Subject:" styleClass="requiredLbl" />
<p:inputText value="#{sendscreen.subject}"
id="subject" required="true" />
<h:outputLabel value="Message:" styleClass="requiredLbl" />
<h:inputTextarea id="txt" value="#{sendscreen.message1}" required="True" style=" width: 250px; height: 100px"/>
<p:commandButton value="Send Email" ajax="false" action="#{sendscreen.sendemails()}" />
<h:panelGroup/>
</h:panelGrid>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</html>

我的发送类是这个(只有方法)。

public void sendemails() {
try {
System.out.println("Sending ......");
Message message = new MimeMessage(sm.getSession());
message.setFrom(new InternetAddress(username));
message.setRecipient(Message.RecipientType.CC, new InternetAddress(email));
message.setSubject(Subject);
message.setContent(message1, "text/plain");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(message1);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource("C:/capture/screenShot.jpg");
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName("screenShot.jpg");
multipart.addBodyPart(attachmentBodyPart);

Transport.send(message);
}catch(Exception asd){
System.out.println(asd.getMessage());
}

我的日志中没有显示任何错误,但该方法没有被调用。问题是什么。

最佳答案

#{sendscreen.sendemails()}

从函数中去掉 ()。

当您导航到新页面时,发送邮件需要返回 String,如果您想留在同一页面上,请返回“”或 null。

public String sendemails() {
//do stuff
return null;
}

一般来说,如果您不想离开页面,最好使用 actionListener 而不是按钮提交上的操作。 (即,删除 ajax="false")并将操作更改为 actionListener - 这也将解决您的问题,因为它将拾取您的 void 方法。 (假设您从操作中删除了 () 仍然)

关于java - 从 JSF 页面调用 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526441/

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