0

在我的申请中有一个注册表单,提交后,它将被邮寄给管理员接受/拒绝注册。

在邮件发送时间,一个唯一的键是附加的Accept button。单击此按钮后actionListener,控制器中将触发一个,并且我想从查询字符串中读取唯一键值,但我得到空值,尽管 URLhttp://localhost:8080/BridgeFront/app/AproveReq.xhtml?activityId=LFGP13005包含查询字符串参数。我做错什么了吗?如果有人知道,请告诉我。我想在我的项目中说一件事,我正在使用 spring 框架。

在 web.xml 中我写了这个来过滤:

<filter>
    <filter-name>openSessionInView</filter-name>
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>

的代码AproveReq.xhtml如下:

<h:form>
<p:commandButton value="Aprove" action="#{aproveDeny.xyz}"/>
<p:commandButton value="Deny"/>
</h:form>

控制器如下:

@ManagedBean(name = "aproveDeny")
@RequestScoped
public class AproveDeny{

@ManagedProperty("#{param.activityId}")

private String activityId;

public void xyz(){
    System.out.println("-------+++"+getActivityId());
}

public String getActivityId() {
    return activityId;
}

public void setActivityId(String activityId) {
    this.activityId = activityId;
}}

以这种方式设置邮件正文(MimeMessage):

MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setTo("xxxxxx.xxxx@gmail.com");
StringBuilder text = new StringBuilder();
StringBuilder text = new StringBuilder();
text.append("<html>");
text.append("<body>");
text.append("<a href="+URL+"?activityId="+ActivityId+">Accept Or Deny request.."+"</a>");
text.append("</body>");
text.append("</html>");
mimeMessageHelper.setText(text.toString(), true);
4

2 回答 2

1

您不必在视图范围内使用托管 bean。首先将其更改为请求范围,然后将您的参数注入到类中的变量中。

@ManagedBean(name = "activityEntryController")
@RequestScoped
public class ActivityEntryController{

@ManagedProperty(value="#{param.activityId}")
private String activityId;

public void aproveActivityEntryReq(ActionEvent event){
  // make your work
}  
}

如果您的 url 中有多个参数,您应该向类添加一个变量并使用ManagedProperty对其进行注释,例如,如果您还想在 url 参数中发送一封电子邮件

@ManagedProperty(value="#{param.email}")
private String email;
于 2013-04-24T07:35:01.537 回答
0

将元数据添加到您的 AproveReq.xhtml 页面会将 activityId 传递给您的托管 bean

<f:metadata>
  <f:viewParam name="activityId" value="#{aproveDeny.activityId}"/>
</f:metadata>

元数据标签应该在页面的开头,即在头标签之前。

于 2013-04-24T11:20:23.480 回答