規格: TOMCAT10,來自 jboss 的焊接庫
程序:嘗試(CDI)從純簡單的 JSP 頁面將輸入文本插入 pojo
<form method="get">
<table width="25%" border=1>
<tr>
<td>Name :</td>
<td><input type="text" maxlength="10" id="login" name="login" value="${bean.input}"/></td>
</tr>
<tr>
<td colspan=2>
<button type="button" id="TEST" value="${bean.submit()}" name="TEST" />TEST-CDI</button>
</td>
</tr>
</table>
</form>
pojo如下
@Named()
@RequestScoped
public class Bean implements java.io.Serializable {
private String input;
private String output;
//Get/setters
public String getInput() {return input;}
public void setInput(String input) {this.input = input;}
public String getOutput() {return output;}
public void setOutput(String output) {this.output = output;}
public void submit() {
output = "Hello World! You have typed: " input;
System.out.println("SUBMITTED : " output);
}
}
O/p :已提交 : Hello World!您輸入了:空
問題:為什么 InputText 的注入沒有傳遞給 pojo?
潛在客戶: WWW 上沒有可用的帖子(google/yahoo....)
關于 karthik
uj5u.com熱心網友回復:
為什么 InputText 的注入沒有傳遞給 pojo ?
因為這不是 CDI 做的。
您基本上忘記了創建如下所示的 servlet:
@WebServlet("/yourServlet")
public class YourServlet extends HttpServlet {
@Inject
private Bean bean;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
bean.setInput(request.getParameter("login"));
if ("submit".equals(request.getParameter("action")) {
bean.submit();
}
request.getRequestDispatcher("your.jsp").forward(request, response);
}
}
您只需要調整表單和提交按鈕如下:
<form action="${pageContext.request.contextPath}/yourServlet" method="post">
...
<button type="submit" name="action" value="submit">TEST-CDI</button>
...
</form>
CDI 基本上只在特定范圍內首次參考時自動創建 bean 實體,例如${bean}在 EL 或@Inject某些容器管理的組件(如 servlet 或另一個 bean)中。CDI 根本不收集和設定提交的 HTTP 請求引數。這是 servlet 的職責。
請注意,當使用 JSF 時,整個程序YourServlet是不必要的,您只需要一個視圖(如 JSP 頁面)和一個模型(如 CDI bean)。這就是 JSF 的全部意義所在。它帶有自己的FacesServlet自動完成這一切。它還可以做更多的事情,例如(隱式)轉換、驗證以及重要的 XSS 攻擊預防。
也可以看看:
- 根據請求引數填充 Javabean 的簡單方法
- 預填充并重新顯示 HTML 表單
- 設計模式基于 Web 的應用程式
- 當可以使用 jQuery 和 AngularJS 等 JavaScript 庫來實作 UI 時,需要 JSF 嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/422580.html
標籤:
上一篇:發送請求后的訊息輸出
