讀取查詢字符串值如何JSF1.1如何通過託管Bean在JSF1.1
回答
String queryString = ((HttpServletRequest) FacesContext.getCurrentContext()
.getExternalContext().getRequest()).getQueryString();
在操作方法或者在你需要它的相聽衆將這個通過託管bean讀取查詢字符串值。不要把它放在構造函數中。
我不確定Bozho的答案如何不適合你,但不管如何,我建議讓JSF做所有的工作,而不是從JSF引擎蓋下的「原始」HttpServletRequest
豆。利用JSF管理的物業設施。
首先,向bean添加兩個屬性:confirmuser
和emailid
,當然還有getter和setter。然後,將它們定義爲faces-config.xml
中的託管屬性,其中它們將被填充#{param.confirmuser}
和#{param.emailid}
。您可能已經知道,#{param}
指向請求參數映射。
E.g.
<managed-bean>
<managed-bean-name>userManager</managed-bean-name>
<managed-bean-class>com.example.UserManager</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>confirmuser</property-name>
<value>#{param.confirmuser}</value>
</managed-property>
<managed-property>
<property-name>emailid</property-name>
<value>#{param.emailid}</value>
</managed-property>
</managed-bean>
這樣JSF會自動設置這些值的bean屬性。
Iam使用Jsf1.1。 Jsf 1.1不支持#{param} El.I想要在jsf1.1中修復此問題 – johnbritto 2010-04-01 11:35:55
它在JSF 1.1中受支持。更重要的是,這與JSF無關。如果它不能解決你的問題,那麼問題的原因就在於別的地方。這可能是因爲你沒有從getQueryString()中得到任何東西。請求鏈中是否有一些奇怪的過濾器或servlet在轉發之前操縱URL? – BalusC 2010-04-01 14:37:22
這個例子很好,我犯了錯誤。 感謝Baulc – johnbritto 2010-04-08 05:48:22
您可以通過將查詢字符串參數作爲<f:param />
值傳遞給您的命令按鈕來完成此操作。
例如,給定以下URL(即,用戶在電子郵件點擊此,因此,沒有支持bean代碼是否已經被執行):
http://localhost:8080/webapp/resetPassword.xhtml?uuid=3d7844ba-5f4b-4de0-9595-fdcbdedad4dc&code=a2JITmEyamJhQ29HTVhyaHhhNnRqdXI3T1kyMldydU4=
你的JSF代碼:
<h:commandButton action="#{resetPasswordController.doActualReset}" value="Submit">
<f:param name="code"
value="#{param.code}" />
<f:param name="uuid"
value="#{param.uuid}" />
</h:commandButton>
BackingBean:
public String doActualReset() {
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> requestMap = context.getExternalContext().getRequestParameterMap();
String code = (String) requestMap.get("code");
String uuid = (String) requestMap.get("uuid");
...
}
警告:這是在JSF 2中測試的,但應該在1.1中工作。這裏沒有什麼是2.x特有的。
'#{facesContext.externalContext.requestParameterMap.get('code')}'很笨拙。只需使用'#{param.code}'。此外,JSF1的EL範圍中沒有'#{facesContext}'。 – BalusC 2012-05-11 04:33:21
好點BalusC。我已根據您的評論更新了樣本。謝謝。 – 2012-05-15 16:40:53
- 1. 如何從jersey.servlet.ServletContainer託管bean獲取Spring託管bean?
- 2. 如何爲託管bean
- 3. 如何通過輪詢機制調用託管bean方法?
- 4. 如何通過@ManagedProperty註釋注入整個託管bean?
- 5. 如何通過JSF託管Bean的JavaScript對象
- 6. 如何使用JavaScript通過參數調用託管Bean方法
- 7. 如何通過託管bean顯示MySQL數據?
- 8. 如何通過BeanManager創建和銷燬CDI(焊接)託管Bean?
- 9. 如何通過託管bean運行beforerenderresponse事件
- 10. JSF託管bean
- 11. 如何在非託管對象中獲得託管bean?
- 12. JSF託管Bean在Servlet中
- 13. 替換託管bean
- 14. JSF的託管bean
- 15. JSF託管bean&Taglib
- 16. 檢索托管Bean
- 17. 託管Bean繼承
- 18. 如何通過引用非託管庫傳遞託管數組?
- 19. 如何配置啓動託管bean?
- 20. 如何更新從託管bean JSF2 primefaces
- 21. 如何從Servlets訪問@ViewScoped託管bean?
- 22. 如何將託管bean注入FacesContext?
- 23. jsf調用另一個託管bean的託管bean方法
- 24. 獲取其他託管bean託管bean參考
- 25. 如何通過TCP端口託管WCF?
- 26. 它是如何通過s3.amazonaws.com託管
- 27. 如何從託管代碼通過DOM
- 28. 通過Spring或通過JSF管理bean
- 29. 無法通過JavaScript調用檢索托管bean屬性
- 30. ADF:通過JSP中的託管bean調用方法
感謝您的回覆 – johnbritto 2010-04-01 09:28:03
我試過了這不是寫作 – johnbritto 2010-04-01 09:33:23
@johnbritto _how_它不工作?詳細信息 – Bozho 2010-04-01 09:34:16