2009-07-17 14 views
0

Jspで動的属性を処理しようとしていますが、何も表示されません。Jspの動的属性を解釈する際に問題が発生する

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="mine" uri="DiceFunctions" %> 


<html><body> 

<mine:advice suggest="yo haa haa" > 

</mine:advice> 
</body></html> 

TLDファイル、WEB-INFフォルダにある:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> 

<tlib-version>1.2</tlib-version> 
<jsp-version>2.0</jsp-version> 
<uri>DiceFunctions</uri> 

<tag> 

<name>advice</name> 
<tag-class>foo.AdvisorTagHandler</tag-class> 
<body-content>scriptless</body-content> 
<attribute> 
<name>optionList</name> 
<type>java.util.List</type> 
<required>false</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>name</name> 
<required>false</required> 
</attribute> 
<attribute> 
<name>size</name> 
<required>false</required> 
</attribute> 
<dynamic-attributes>true</dynamic-attributes> 

</tag> 

とタグハンドラクラス:

package foo; 
import javax.servlet.jsp.JspException; 
import javax.servlet.jsp.tagext.*; 
import java.io.*; 
import javax.servlet.jsp.*; 
import java.util.*; 

public class AdvisorTagHandler extends TagSupport implements DynamicAttributes { 



private Map<String,Object> tagAttrs=new HashMap<String,Object>(); 

public int doStartTag() throws JspException{ 
//movieCounter=0; 
try{ 


for(String attr: tagAttrs.keySet()) 
{ 
String attrd=String.format("%s='%s'",tagAttrs.get(attr)); 

pageContext.getOut().print(attrd); 
} 

} 
catch(Exception e) 
{ 
} 

return SKIP_BODY; 
} 

public void setDynamicAttribute(String uri, String name, Object value){ 

tagAttrs.put(name,value); 
} 
public int doEndTag() throws JspException{ 
return EVAL_PAGE; 
} 

はここJSPコードです

変更点動的属性の値を表示するにはどうすればよいですか?

ありがとうございます。

答えて

2

この行に問題があります:

String attrd = String.format("%s='%s'", tagAttrs.get(attr)); 

次の2つの文字列引数を指定して、一つだけを提供。 catchブロックで

try { 
    for (Map.Entry<String, Object> attr : tagAttrs.entrySet()) { 
    String attrd = String.format("%s='%s'", attr.getKey(), attr 
     .getValue().toString()); 
    pageContext.getOut().print(attrd); 
    } 
} catch (IOException e) { 
    throw new JspException(e); 
} 
+0

あなたの助けに感謝McDowell。今それは正常に動作しています。 – Greenhorn

1

あなたは空のcatchブロックにいくつかのコードを入れて、何が起こるかを見ることができました...

+0

私が試したe.getMessage()またはe.printStackTrace()メソッドを、まだ応答で何を得ていない。このような

何かがよりよく動作するはずです。 – Greenhorn

関連する問題