JSP标记是Java Server Pages的一项功能,它允许封装特定于视图的逻辑以及表示和业务问题的分离。
无法使用 Struts 2 在 select 标签中动态添加值
这是一个非常简单的问题,但尚未找到解决方案。我可以在页面中打印不带 0 的值,但无法将这些值绑定到选项中的 标记。 我的代码是... 这是一个非常简单的问题,但尚未找到解决方案。我可以打印页面中没有 0 的值,但无法将值绑定到选项中的 <select> 标签。 我的代码是: ${sa.replace("0", "")} displays numbers without 0's 但是,带有值的选项不会显示在 UI 中: <option value="<s:property value="%{#sa}"/>" <s:if test="%{#sa == #sumAssured.toString()}"> selected="" </s:if> > <span class="eurosymbol formatAmount"> <span><s:property value="%{#sa.replace('0','')}"/></span> </span> </option> 要在 OGNL 中使用对象,该对象应该位于值堆栈中。您可以使用 attr 对象在其他范围内搜索。 <option value="<s:property value='%{#attr.sa}'/>" <s:if test="%{#attr.sa == #attr.sumAssured.toString()}"> selected="selected"</s:if>> <span class="eurosymbol formatAmount"><span><s:property value="%{#attr.sa.replace('0','')}"/></span></span> </option>
如何在 Struts 2 中使用 <s:text> 在错误消息中使用参数?
当我尝试在文本中放入一些动态部分以供 Struts 2 中的 标记使用时,这些部分将被我定义的参数替换。 这是我在文件中写句子的方式。
我有一些关于包含标签的问题。 使用这样的结构是否正确: 我有一些关于包含标签的问题。 使用这样的结构是否正确: <c:choose> <c:when test="${info == 'view_users'}"> <jsp:include page="/WEB-INF/jsp/admin/view_users.jsp" /> </c:when> <c:when test="${info == 'view_products'}"> <jsp:include page="/WEB-INF/jsp/admin/view_products.jsp" /> </c:when> <c:when test="${info == 'edit_product'}"> <jsp:include page="/WEB-INF/jsp/admin/edit_product.jsp" /> </c:when> <c:when test="${info == 'view_categories'}"> <jsp:include page="/WEB-INF/jsp/admin/view_categories.jsp" /> </c:when> </c:choose> 有时,我会遇到异常JasperException: Unable to compile class for JSP。 如果我使用静态包含而不是动态包含,通过在 JSP 中使用 include 指令,我的问题是否会得到解决,或者我是否需要放弃这样的结构?所有包含的页面都有固定的结构,而不是动态的。 结构可以简化,但不能解决你的编译问题。 <c:import url="/WEB-INF/jsp/admin/${info}.jsp" /> 而是将此逻辑委托给控制器(使用 MVC)来决定应返回哪个视图并正确初始化视图。
在将应用程序从 Struts 1.2.x 迁移到 Spring MVC 时,我被困在 JSP 中必须使用 .properties 查找文件中的标签的地方。 在遗留代码中,应用程序使用了 Struts
我有一个基本的Java标签(称为PluginTag),它扩展了TagSupport。该标签使用 JspWriter 实例向调用 JSP 添加一些行为,例如 this.pageContext.setAttribute("插件",
在显示标签的文档中,提到了一个表单选项 我正在尝试使用此选项将一些数据发布到另一个页面上,这将为我提供一个页面的下 10 个结果...
我在 JSP 中使用外部分页/排序和自定义 TableDecorator 以及以下 DisplayTag 表: 我在 JSP 中使用带有自定义 TableDecorator 和以下 DisplayTag 表的外部分页/排序: <display:table id="ixnlist" name="pageScope.itemList" sort="external" decorator="org.mdibl.ctd.pwa.displaytag.decorator.IxnTableWrapper"> <display:column title="Row" property="rowNum" /> ...more columns... </display:table> 在表装饰器中, getListIndex() 返回仅相对于当前页面的行号,而不是相对于整个列表的行号(即,如果我们每页显示 100 个对象,则 getListIndex() 在页面顶部返回“0”第 2 页,不是“100”)。 /** * Returns the row number data for the current row. * * @return String containing row number heading. */ public String getRowNum() { final StringBuilder out = new StringBuilder(8); out.append(nf.format(getListIndex() + 1)) .append('.'); return out.toString(); } 表装饰器中是否有可能以某种方式获得反映正确偏移量的行号? Displaytag is 知道某个地方的偏移量,因为它使用它来格式化分页链接。 displaytag 文档没有解决这个问题,并且 ${row_rowNum} 隐式对象的工作方式与装饰器中的 getListIndex() 相同。 是的,可以通过向分页 SQL 添加行号列并让 TableDecorator 使用它(如果可用)来实现此目的,但我不想依赖 DAO 来获取此类元数据。 以下 TableDecorator 方法利用 rownum 列(如果存在),否则使用 getListIndex(): /** * Returns the row number data for the current row. * * @return String containing row number heading. */ public String getRowNum() { final StringBuilder out = new StringBuilder(8); final Map row = (Map) getCurrentRowObject(); // Use 'rnum' column for external pagination if it exists. // Kludgy way of doing this. if (row.get("rnum") != null) { out.append(nf.format(row.get("rnum"))); } else { out.append(nf.format(getListIndex() + 1)); } out.append('.'); return out.toString(); } 谢谢。 /mcr 您应该能够通过引用请求中的页码来计算正确的总体索引值。 编写类似这样的代码,您的TableDecorator类应该可以工作: public String getIndex() { int numItemsPerPage = 100; int page = Integer.parseInt(getPageContext().getRequest().getParameter("page")); int index = getListIndex(); return ((page - 1) * numItemsPerPage) + index + 1; }
是否可以在 Eclipse 中突出显示 JSP 文件内的 JavaScript 脚本?
我主要使用 JS、JSP 和 JAVA 文件,我尝试了几种不同的解决方案,但似乎无法突出显示其中的内容 就像 JavaScript 一样
我创建了一个jsp页面,如下: <%@ page contentType="text/css" %> 登录页面 我创建了一个jsp页面,如下: <%@ page contentType="text/css" %> <html> <head> <title>Login page</title> <link href="/css/loginstyle.css" rel="stylesheet" type="text/css"> </head> <body> <h1> India welfare</h1> <p> welcome </p> </body> </html> 并将其命名为 login.jsp 我还创建了一个名为loginstyle.css的css文件,.css文件的代码如下: body { background-color:#d0e4fe; } h1 { color:orange; text-align:center; } p { font-family:"Times New Roman"; font-size:20px; } css和jsp的目录结构如下: webcontent/welfare_web/css 用于 .css 文件和 webcontent/welfare_web/login 用于 jsp 文件 编程编辑器是eclipse,我使用的服务器是tomcat 7.0。当我尝试使用 tomcat 服务器运行 login.jsp 文件时。 css文件没有显示任何效果。我的意思是输出是普通文本,而不是 CSS 文件。 请帮我如何制作.css文件来影响jsp文件。 css href 链接不正确。使用相对路径代替: <link href="../css/loginstyle.css" rel="stylesheet" type="text/css"> 我用的是这个版本 <style><%@include file="/WEB-INF/css/style.css"%></style> 你可以这样写。这是因为每当您更改上下文路径时,您都不需要修改 jsp 文件。 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/styles.css" /> 我也有同样的问题。然后我意识到 在 MainPageServlet 中 @WebServlet 注释中的 urlPatterns 参数包含“/”,因为如果用户输入了 www.site.com/ 部分,我想转发到 MainPage。当我尝试从浏览器打开css文件时,网址是www.site.com/css/desktop.css,但页面内容是页面MainPage.jsp。因此,我删除了“/” urlPattern,现在我可以使用最常见的解决方案之一在 jsp 文件中使用 CSS 文件 (${pageContext.request.contextPath}/css/desktop.css)。 确保您的 servlet 不包含“/”urlPattern。 我希望这对你也有用, - 阿克塞尔·蒙蒂尼 如果一切看起来正确,尽管它仍然不起作用,我邀请您像这样加载 web.xml 中的静态文件 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/includes/*</url-pattern> </servlet-mapping> 之后 <!-- bootstrap css --> <link rel="stylesheet" type="text/css" href="/includes/asserts/css/bootstrap.min.css"/> 使用这个对我有用 <style><%@include file="/WEB-INF/view/style/style.css"%></style> 对于CSS: <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> 对于JS: <script type="text/javascript" src="js/bootstrap.js"></script> 文件位置: └───src └───main ├───java └───webapp ├───css/bootstrap.css ├───js/bootstrap.js ├───META-INF └───WEB-INF/index.jsp └───lib 我遇到了同样的问题,但它对我有用。
在form:options中添加数据属性,即在options.tag中
我在 pageContext 中有一个对象列表,我想要在 select 的选项标签的数据属性中使用它的一些属性。 下面是jsp代码: 我在 pageContext 中有一个对象列表,我想要在 select 的选项标签的数据属性中使用它的一些属性。 下面是jsp代码: <form:select class="required chzn_a" disabled="${view}" path="one.id" id="one"> <form:option value="">Select</form:option> <form:options items="${objectList}" itemValue="id" itemLabel="name"/> </form:select> 我想要如下所示的东西: 但是,以下是我得到的: 据我所知 form:options 标签不支持这样的自定义。相反,您可以像这样自己循环选择选项: <form:select class="required chzn_a" disabled="${view}" path="one.id" id="one"> <form:option value="">Select</form:option> <c:forEach items="${objectList}" var="objectListEntry"> <form:option value="${objectListEntry.id}" data-code="${objectListEntry.code}">${objectListEntry.name}</form:option> </c:forEach> </form:select> Spring 表单标签实现了 DynamicAttributes 接口,并且 tld 中未显式定义的所有属性都将添加到生成的标签中。 我遇到了同样的问题,如何将属性(ISO 3 字母国家代码)添加到选择的选项中。一本字典和一点 jQuery 效果很好: var countryDict = {}; // make a dictionary of {country ID : country iso Code} countryList.forEach(element => { countryDict[element.id] = element.iso3Code; }); $('#myCountry > option').each(function(){ // use that dictionary to add ISO code as an attribute to country options. $(this).attr('isoCode', countryDict[$(this).val()]); }); 使用更改 tld 文件覆盖 spring 选项标签 创建新参数标签并在 tld 中定义 类似这个 public class OptionsTagNew extends OptionsTag { @Getter List<OptionalAttributeOptionModel> optAttr = new ArrayList<>(); @Override protected void writeOptionalAttributes(TagWriter tagWriter) throws JspException { super.writeOptionalAttributes(tagWriter); for (OptionalAttributeOptionModel x : optAttr) { writeOptionalAttribute(tagWriter, x.getName(), x.getValue()); } } public void setOptAttr(OptionalAttributeOptionModel optAttr) { this.optAttr.add(optAttr); } } @Getter @Setter @AllArgsConstructor class OptionalAttributeOptionModel { private String name; private String value; } @Getter @Setter public final class AddOptionAttributeTag extends TagSupport { private String name; private String path; @Override public int doStartTag() throws JspException { OptionsTagNew parent = (OptionsTagNew) findAncestorWithClass(this, OptionsTagNew.class); if (parent == null) { throw new JspException("AddOptionAttributeTag must be within a OptionTag!"); } parent.setOptAttr(new OptionalAttributeOptionModel(name, getPathValue(parent.getItems()))); return SKIP_BODY; } private String getPathValue(Object items) { BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(items); return Objects.requireNonNull(wrapper.getPropertyValue(this.path)).toString(); } @Override public int doEndTag() throws JspException { return super.doEndTag(); } @Override public void release() { this.name = null; this.path = null; super.release(); } }
如何在 *.tag 自定义标签中设置 pageEncoding 的全局指令?
在 JSP 中您可以使用以下内容: *.jsp 真实 在 JSP 中您可以使用以下内容: <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> <!-- 1 --> <page-encoding>UTF-8</page-encoding> <!-- 2 --> </jsp-property-group> <jsp-property-group> <url-pattern>*.tag</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> 是否有一个自定义标签相当于为使用 *.tag 文件创建的所有自定义标签设置编码指令? 您可以在部署描述符中定义JSP配置参数,但在TLD(标签库描述符)中声明标签。 TLD 没有编码参数,并且 部署描述符没有这样的选项 对于 <taglib> 元素,这意味着您不能。 看来是做不到了。我发现了这个:https://stackoverflow.com/a/9739412/8081996。 我认为 njjnex 的回答不是重点。他指的是用 Java 编码的标签库,但这不是问题所在。
我正在尝试通过 JSP 构建应用程序页面,使用外部标签(“页面”)内的嵌套标签。所有标签都需要访问从控制器传入的同一对象。 但我不能...
在我的JSP中有代码: "/> 我想用这样的东西替换它: 在我的JSP中有代码: <img src="<c:out value="${requestScope['img_url']}"/>"/> 我想用这样的东西替换它: <xyz:img src="${requestScope['img_url']}"/> 我尝试了Struts Taglib,但它需要Struts。还有其他选择吗? 这只是自定义 JSP 标签。有一个很棒的 Sun/Oracle 教程 以及许多其他很棒的资源。 编辑:原始链接不再有效,我不知道替换网址。此存档链接应包含与原始帖子发布时相同的内容。 这篇文章帮助我找到了一个非常简单的解决方案:使用标签文件封装可重用内容 创建文件WEB-INF/tags/img.tag 将此标头添加到 JSP:<%@taglib tagdir="/WEB-INF/tags" prefix="xyz" %> 就用它吧:)
我第一次编写JSP代码。 当我声明一个表达式语句时,它给了我一个错误; sum 无法解析为变量。 这是我的代码供您参考 <%@ page langu...
我不知道如何获取JSP页面中display:column的值来签入JS函数。 JSP 页面: ... 我不知道如何获取JSP页面中display:column的值来签入JS函数。 JSP页面: <display:table> ... <display:column property="surnameName" title="Surname, Name" /> <display:column property="type" title="Type"/> .... </display:table> JS功能: function next2(){ ... var type = $('.type').val(); //Obtain an undefined value ... if (documents.length > 1 && (type=='Mail Addresss' || type=='Ordinary')) { alert("You must select at least a PDF for Mail Addresss or Ordinary type for the stakeholder"); return false; } ... } function next2() { var types = []; $('.your-table-selector').find('tr').each(function() { var type = $(this).find('td:eq(1)').text().trim(); // Assuming type is in the second column (index 1) types.push(type); }); if (types.length > 1 && (types.includes('Mail Addresss') || types.includes('Ordinary'))) { alert("You must select at least a PDF for Mail Addresss or Ordinary type for the stakeholder"); return false; }} 将“.your-table-selector”替换为适合您的表的选择器。此代码假定类型值显示在表的第二列中。如果列位置不同,请调整 td:eq() 中的索引。 此 JavaScript 函数将从显示的表格行中提取所有类型值,并根据您指定的条件执行必要的验证。
javax.servlet.jsp.JspTagException:'开始'< 0
javax.servlet.jsp.JspTagException:'开始'< 0 Once in a while you run into an error and you say: What the WHAT?? tagexception begin < 0. Seen this wonder before??
我有这个编辑表格: 我希望选择用户的角色。如果这是一对多关系,我知道我可以这样做: 角色:<...
如何修复错误方法_jspService(HttpServletRequest, HttpServletResponse)的代码超出了Jboss的65535字节限制
我遇到了生成的java文件中第384行发生错误方法的代码 _jspService(HttpServletRequest,HttpServletResponse) 超出 65535 字节限制。 我有...
为什么不能将 jsp include 标记与 <%= ... %> 表达式结合起来? ...