java - Jsp中解释动态属性的问题

标签 java jsp custom-tags

我正在尝试在 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;
}

我需要做什么修改才能显示动态属性值?

提前致谢。

最佳答案

这一行有问题:

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

您指定了两个字符串参数,但只提供了一个。

像这样的东西应该效果更好:

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);
}

关于java - Jsp中解释动态属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142734/

相关文章:

java - 在Struts2中上传多个文件并维护索引(文件上传的位置)

java - 无法从自定义 JSP 标记文件中的方法内访问隐式对象

java - 带有 JSF 主体的 JSP 自定义标记

java - 在 DB2 10.5 中使用 DB2 加载命令加载数据时出错

java - 计算日期

java - 存储 "absolute xor incremental"值的设计模式

Java For each 循环对象分配不起作用

java - 使用 jsp : any better approaches? 从 POST 表单中提取 100 多个输入数据

javascript - 如何在 Javascript 中设置隐式对象响应