2010-04-27 30 views
0

我創建了一個Spring Roo項目。一切都很美好。現在我想添加一個文本輸入框和一個按鈕到我的index.jspx。此表單將更改我的ToDo類中的靜態字段currentUser。所以我加入:Jsp static import

<form> 
    <%@ page import="static com.mypack.domain.ToDo.*" %> 
    <label for="_username_id">My name is:</label> 
    <% currentUser = request.getParameter("username"); %> 
      <input type="text" id="username" name="username" maxlength="30" path="username" size="0" value="<%= currentUser %>"/> 
      <input type="submit"/> 
</form> 

在它的中間的某個地方。現在它不會工作:

This page contains the following errors: 

error on line 6 at column 20: StartTag: invalid element name 
Below is a rendering of the page up to the first error. 

function readCookie(name) { var nameEQ = name + '='; var ca = document.cookie.split(';'); for(var i=0;i 

如果我評論上面的行,它工作得很好。哪裏不對?有沒有辦法從jsp頁面向類的靜態字段寫入值?我如何解決這個問題?

回答

2

只需使用EL。請求參數可通過${param.name}獲取。

<input type="text" name="username" value="${param.username}" /> 

您只需要考慮XSS。使用JSTL fn:escapeXml此:

<input type="text" name="username" value="${fn:escapeXml(param.username)}" /> 

不要使用小腳本(那些<% %>的東西)。他們被認爲是bad practice

ToDo.currentUser是一個靜態字段也聽起來不太好。它的價值將在Web應用程序中的所有請求/會話中共享。不同的訪問者會看到相同的價值,任何修改都會反映給所有訪問者。那是你要的嗎?

+0

因此,如何使用EL,如何將我的值寫入ToDo.currentUser字段? – folone 2010-04-27 01:02:05

+0

或者我如何從我的控制器訪問'$ {param.username}'? – folone 2010-04-27 01:07:34

+0

您通常通過servlet提交表單並在那裏處理它。在servlet中,您可以控制/預處理/後處理請求並自由編寫Java代碼。這裏有一些很好的教程來學習JSP/Servlet/MVC的基本概念:http://courses.coreservlets.com/Course-Materials/csajsp2.html下一步,您可以使用一個構建於頂部的MVC框架Servlet API可以更透明地執行此操作。 Spring Roo就是其中之一。您是否也在http://www.springsource.org/roo上閱讀過他們的教程/文檔? – BalusC 2010-04-27 01:10:09