没有从查询字符串中获取值

时间:2013-04-24 07:07:57

标签: java spring jsf-2 query-string javamail

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

在邮件发送时间中,唯一键附加Accept button。单击此按钮后,将在控制器中触发actionListener,并且我想从查询字符串中读取唯一键值,但我得到null,尽管URL http://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);

2 个答案:

答案 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>

元数据标签应位于页面的开头,即头标记之前。