在我的申请表中有一个注册表格,提交后,它将邮寄给管理员接受/拒绝注册。
在邮件发送时间中,唯一键附加Accept button
。单击此按钮后,将在控制器中触发actionListener
,并且我想从查询字符串中读取唯一键值,但我得到null,尽管URL http://localhost:8080/BridgeFront/app/AproveReq.xhtml?activityId=LFGP13005
包含查询字符串参数。我做错了什么吗?如果有人知道请告诉我。
在项目中我想说的一件事我正在使用spring框架。
<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);
答案 0 :(得分:1)
您不必使用带有视图作用域的托管bean。首先将其更改为请求范围,然后将您的参数注入类中的变量。
@ManagedBean(name = "activityEntryController")
@RequestScoped
public class ActivityEntryController{
@ManagedProperty(value="#{param.activityId}")
private String activityId;
public void aproveActivityEntryReq(ActionEvent event){
// make your work
}
}
如果你的网址中有多个参数,你应该再向课程中添加一个变量并使用 ManagedProperty 进行注释,例如,如果你想在url参数中发送一封电子邮件
@ManagedProperty(value="#{param.email}")
private String email;
答案 1 :(得分:0)
向AproveReq.xhtml页面添加元数据会将activityId传递给托管bean
<f:metadata>
<f:viewParam name="activityId" value="#{aproveDeny.activityId}"/>
</f:metadata>
元数据标签应位于页面的开头,即头标记之前。