相同的EL表達式${taskId}
在不同的地方給出兩個不同的值。不一致的表達式語言行爲,相同的表達式不同的值
我正在使用Stripes框架,以及MongoDB和Morphia的對象映射(當然還有Java/JSP /等)。
使用以下JSP /表達式語言代碼:
<c:forEach items="${actionBean.tasks}" var="listTask">
<c:set var="taskId" scope="page" value="${listTask.id}"/>
<s:form method="post" beanclass="action.TaskActionBean">
${taskId}<s:hidden name="task.id" value="${taskId}"/>
<s:submit name="promoteTask" value="Up" />
</s:form>
</c:forEach>
提供了以下生成的代碼:
<form method="post" action="/scrumyogi/">
4ef99b730364de7ec70dbd68
<input type="hidden" value="4ef99b6c0364de7ec70dbd67" name="task.id">
<input type="submit" value="Up" name="promoteTask">
<div style="display: none;">
<input type="hidden" value="NPNEJw6tUWfRBXf-vVOLTw==" name="_sourcePage">
<input type="hidden" value="XbfUDiSHGrU=" name="__fp">
</div>
</form>
正如你可以看到$ {任務id}正在打印4ef99b730364de7ec70dbd68
然後4ef99b6c0364de7ec70dbd67
,這對我沒有意義,我需要$ {taskId}打印出相同的值4ef99b730364de7ec70dbd68
是正確的。
是否有一些已知問題可能導致此問題。
編輯:真正的問題是隱藏窗體標記中的$ {taskId}不正確,我打印另一個值來查看錶達式包含的內容,然後發現它在不同位置有所不同 - 這使得事物嚴重混淆。
的ActionBean代碼:
@UrlBinding("/")
public class TaskActionBean extends BaseActionBean{
String taskId;
Task task = new Task();
List<Task> tasks;
public final static String DISPLAY = "/index.jsp";
@DefaultHandler
public Resolution listTasks(){
tasks = Dao.datastore().find(Task.class).order("rank").asList();
return new ForwardResolution(DISPLAY);
}
public Resolution promoteTask(){
task.promoteTask();
tasks = Dao.datastore().find(Task.class).order("rank").asList();
return new ForwardResolution(DISPLAY);
}
// ... getters and setters
該代碼片段化,我不認爲其他代碼是相關的,但如果這是不夠的,我可以包括更多。 – Ankur 2011-12-27 11:08:58
發佈您的動作bean代碼。 – soulcheck 2011-12-27 11:30:34
目前我已經通過使用對象解決了這個問題,但是如果有人知道,我仍然很想理解這裏發生了什麼。 –
Ankur
2011-12-27 11:33:45