#java #struts #struts-1
#java #struts #struts-1
Вопрос:
Я написал условный if else
тег внутри logic:iterate
в jsp, как показано ниже:-
<s:if test="%{#status=='Scheduling'}">
<td><input type="button" name="Save" enabled="enabled" value="View Log" class="Button" onclick="javascript:update('<bean:write name="test" property="listName" />','<bean:write name="test" property="testType" />',<bean:write name="test" property="status" />,this.value)"></td>
</s:if>
<s:elseif test="%{#status=='Running'}">
<td><input type="button" name="Save" enabled="enabled" value="View Log" class="Button" onclick="javascript:update('<bean:write name="test" property="listName" />','<bean:write name="test" property="testType" />',<bean:write name="test" property="status" />,this.value)"></td>
</s:elseif>
<s:else>
<td><input type="button" name="Save" disabled="disabled" value="View Log" class="Button" onclick="javascript:update('<bean:write name="test" property="listName" />','<bean:write name="test" property="testType" />',<bean:write name="test" property="status" />,this.value)"></td>
</s:else>
Я определил <%@taglib prefix="s" uri="/struts-tags" %>
в начале файла jsp, как показано ниже:-
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@taglib prefix="s" uri="/struts-tags" %>
Когда я открываю файл jsp, я получаю следующие ошибки. Не могли бы вы помочь мне в решении этой проблемы?
org.apache.jasper.JasperException: File "/struts-tags" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1439)
org.apache.jasper.compiler.Parser.parse(Parser.java:137)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Ответ №1:
Вы смешиваете теги Struts 1.3 с тегами Struts 2. Для того, чтобы ваша декларация taglib <%@ taglib prefix="s" uri="/struts-tags" %>
была скомпилирована, вы должны включить struts2-core-2.1.6.jar
(последнюю версию jar на момент написания) в вашу WEB-INFlib
папку, Struts 2 struts-tags.tld
находится в разделе (struts2-core-2.1.6.jar META-INF struts-tags.tld).
Имейте в виду, что Struts 2 никогда не будет обратно совместим со Struts 1, поскольку это совершенно новая архитектура, Apache взял новое направление от Struts 1.
Я предлагаю использовать JSTL вместо использования определений taglib Struts 2, поскольку Struts 1.3 хорошо работает с JSTL.
Комментарии:
1. я использую только struts 1.3, я не хочу работать со struts 2, не могли бы вы предложить код для JSTL в этом контексте.
2. @user756993, вы можете использовать
<c:if>
тег или<c:choose>
теги (<c:when>
amp;<c:otherwise>
) для потоков условных тегов.
Ответ №2:
в вашем дескрипторе развертывания это web.xml у вас должно быть объявлено что-то вроде следующего. (не забудьте иметь файлы tld в вашем расположении в этом taglib)
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>
</taglib>
</jsp-config>