Помогите с сервлетом,уже 2 день сижу
в классе поддержки
...
public int doAfterTag() throws JspException {
try {
String body = bodyContent.getString();
buffer = new StringBuffer("<select name='" + name + "'
onChange='this.form.submit()'/> " + body + "</select>");
pageContext.getOut().print(buffer);
} catch (IOException ex) {
throw new JspException(ex.getMessage());
}
return BodyTagSupport.SKIP_BODY;
}
...
сам index.jsp
..
<html:links name='api'>
<option value='Servlets'>servlets</option>
<option value='JSP'>jsp</option>
<option value='Swing'>swing</option>
<option value='JDBC'>JDBC</option>
<option value='JNDI'>JNDI</option>
</html:links>
...
По идее оно должно преобразовывать в
<selecе name='api' onChange='this.form.submit()'>
<option value 'Servlets'>servlets</option>
<option value='JSP'>jsp</option>
<option value='Swing'>swing</option>
<option value='JDBC >JDBC</option>
<option value=' JNDI' >jNDK/option>
<option value 'JavaBeans'>JavaBeans</option>
</select>
и выводить
но почему-то ничего не выводится
Быть может, попробуешь так: <html:links name='api' scope="page"> ??
Везде пишет "doAfterBody", возможно в етом причина?!
Цитата: bioflash
Если честно то никогда не встречал такого матода "doAfterTag"!!!
Везде пишет "doAfterBody", возможно в етом причина?!
Везде пишет "doAfterBody", возможно в етом причина?!
Методы doAfterTag, как и doBeforeTag будут, если отнаследоваться от SAX-парсера :) .
Но я вот тут подумал - а зачем тут вообще нужем парсер?!
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.*;
public class LinksTag extends BodyTagSupport {
private String name;
private StringBuffer buffer;
public void setName(String name) {
this.name = name;
}
public void setBodyContent(BodyContent bodyOut) {
this.bodyOut = bodyOut;
}
public int doAfterBody() throws JspException {
try {
String body = bodyContent.getString();
buffer = new StringBuffer("<select name='" + name + "' onChange='this.form.submit()'/> " + body + "</select>");
bodyOut.print(buffer.toString());
bodyOut.writeOut(bodyOut.getEnclosingWriter());
} catch (IOException ex) {
throw new JspException(ex.getMessage());
}
return BodyTagSupport.SKIP_BODY;
}
protected BodyContent bodyOut;
}
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class LinksTag extends BodyTagSupport {
private String name;
public String getName() {
return name;
}
public void setName(String value) {
name = value;
}
public int doEndTag() throws JspException {
try {
pageContext.getOut().print("<select name='" + name + "' onChange='this.form.submit()'/> " + bodyContent.getString() + "</select>");
} catch(IOException e) {
}
return BodyTagSupport.EVAL_PAGE;
}
}
Если и ето не заработает, то что-то неверно сделал в tld-файле!!!
спасибо,помогло
Только вопрос один почему тоже самое но doAfterTag не работает а с doEndTag работает
Во-вторих: не могу точно сказать почему, нужно детальнее посмотреть и почитать. Извини, но нету времени.