2013-04-24 60 views
0

在我的應用程序中有一個註冊表單,提交後,它將郵寄給管理員接受/拒絕註冊。沒有從查詢字符串中獲取價值

郵件發送時間一個唯一的密鑰是追加Accept button。點擊這個按鈕後,將在控制器中觸發一個actionListener,並且在那裏我想從查詢字符串中讀取唯一鍵值,但是我得到空值,儘管URL http://localhost:8080/BridgeFront/app/AproveReq.xhtml?activityId=LFGP13005包含查詢字符串參數。我做錯了什麼?如果有人知道,請讓我知道。 我想在我的項目中說我使用spring框架的一件事。

在web.xml

我已經writen這個過濾:

<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("[email protected]"); 
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); 

回答

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對它進行註釋,例如

@ManagedProperty(value="#{param.email}") 
private String email; 
+0

感謝@oko的回覆,我不明白'@ManagedProperty(value =「#{param.activityId}」)'沒有這個,我嘗試了我的bean在requestScoped中的作用域,它不工作,'request.getQueryString ()'返回null。 – Diganta 2013-04-24 08:22:43

+0

ManagedProperty是一個特殊的註釋,它定義了一個變量,它接受url參數並直接注入它。當你的管理員打開頁面時,這個activityId將被注入到關鍵變量中。而ManagedProperty僅適用於** requestScoped ** beans。 – oko 2013-04-24 08:34:44

+0

自動參數'activityId'將被注入變量'key' ?? – Diganta 2013-04-24 08:42:07

0

添加元數據到您的AproveReq.xhtml頁面將通過activityId你的託管bean

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

元數據標籤應在頁面的開頭即頭標籤之前。

+0

不,它也返回null。我認爲問題在其他地方產生。但我不知道我犯了什麼錯誤。請回復。 – Diganta 2013-04-24 11:47:16

+0

嗯我已經複製了您的代碼jsf頁面和控制器,並且我做的唯一更改是添加元數據標記,並點擊傳遞activityId的url並且它工作。 – 2013-04-24 11:59:54

+0

從哪裏設置查詢字符串值? – Diganta 2013-04-24 12:04:36