2012-07-31 21 views
0

您好我有這樣<c:forEach>和<h:commandLink>無法一起工作?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Compact Output</title> 
</head> 
<body> 
    <f:view> 
    <h:form> 
     <c:forEach items="${bean.itemlist}" var="item"> 
     <h:panelGrid columns="1" id="panel1"> 
     <h2><c:out value="${item.displayName}" /></h2> 
      <img src="<c:out value="${item.thumbnailURI}"/>" height="600" width="800" />  
      <h:commandLink action="#{bean.action1}" value="Details"> 
      <f:param name="selecteddisplayName" value="#{item.displayName}" /> 
      </h:commandLink> 
     </h:panelGrid> 
     </c:forEach> 
    </h:form> 
</f:view> 
</body> 
</html> 

一個jsp頁面,我把

 <h:commandLink action="#{bean.action1}" value="Details"> 
      <f:param name="selecteddisplayName" value="#{item.displayName}" /> 
      </h:commandLink> 

,在標籤內,但是當點擊鏈接時,#{} bean.action1接到電話,但參數項.displayName不傳遞給控制器​​。我試圖將其更改爲$ {item.displayName},然後編譯錯誤「value」不支持運行時表達式。

我的jsp頁面有什麼問題?

在我的控制器中,我定義了private String selecteddisplayName和getter/setters。

也許不能一起工作?

回答

0

如果u想在屬性設置值比

嘗試的<f:setPropertyActionListener value="" target=""/> 代替<f:param name="selecteddisplayName" value="#{item.displayName}" />

+0

我試了一下沒有工作。在該bean中的的值爲空,且該bean中的值爲「」的。沒有太大的區別... – flyasfish 2012-07-31 23:42:51

+0

我想這是混合使用$ {}和#{}的問題,當評估表達式#{item.displayName}時,該值尚未存在,生成的html可以證明這一點。你可以在html中看到這個值是「」。 Details flyasfish 2012-08-01 03:47:53

+0

但是,當我將其更改爲$ {item.displayName}時,eclipse會發出編譯錯誤「value」不支持運行時表達式。當在服務器上運行時,我得到錯誤:根據標記文件中的TLD或屬性指令,屬性值不接受任何表達式。如何解決這個問題? – flyasfish 2012-08-01 03:53:00

相關問題