如何写一个从数据库直接得到数据的自定义标签,然后在jsp页面用标签把数据显示出来。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何写一个从数据库直接得到数据的自定义标签,然后在jsp页面用标签把数据显示出来。相关的知识,希望对你有一定的参考价值。

如果有人写过类似的,可不可以自定义标签实现类的代码贴出来啊,万分感谢T-T

自定义标签直接使用方法取出数据库中的某一个表的数据,页面使用此标签可以,把所有数据分页显示。说说给个思路也可以的,谢啦

1,你要先在WEB-INF下建一个tld文件,比如说myTags.tld内容如下
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name>
<tag>
<name>showNumForBbsTopic</name>
<tag-class>com.movie.mytag.ShowNumForBbsTopic</tag-class>
<body-content>jsp</body-content>
</tag>
</taglib>
2,然后按你配置中写的路径在com.movie.mytag包下建一个ShowNumForBbsTopic类,内容如下:
package com.movie.mytag;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class ShowNumForBbsTopic extends BodyTagSupport
public void setBodyContent(BodyContent bc)

super.setBodyContent(bc);

public int doAfterBody()

try

BodyContent body = super.getBodyContent();
String bodystring = body.getString();//*这里可以取到你页面上要传近来的内容*
//这里做你的操作......
JspWriter out = body.getEnclosingWriter();
out.print("这里写你需要输出的内容");
catch(Exception e)

e.printStackTrace();

return EVAL_PAGE;


3.你页面上需要用这个标签时在页面头部加入下面这句话
<%@ taglib uri="WEB-INF/myTags.tld" prefix="my" %>//my是你的别名
页面中要使用ShowNumForBbsTopic时:
<my:showNumForBbsTopic><bean:write name="HelpForReplyList" property="currPage"/></my:showNumForBbsTopic>
<bean:write name="HelpForReplyList" property="currPage"/>所代表的值就别刚才**注释的那句话接收到了
方法就是这样了,至于你想如何进行操作,那就看你自己怎么实现了。
参考技术A 首先你了解标签的原理

通过页面定义的标签里的参数传到实际实现他的类里 然后类根据这几个参数进行操作 实际上也就是在类里利用JAVA语言写html代码而已 你自己可以尝试下
参考技术B 继承之TagSupport, int doAfterBody()
Default processing for a body.
int doEndTag()
Default processing of the end tag returning EVAL_PAGE.
int doStartTag()

覆盖这些方法,具体看你自己需要覆盖哪个,方法名是你的依据,在一个tld文件里头描述你的标签信息,其实是个xml文件,其实就是指定类,以及一些类的属性值等,web.xml添加你的tld文件描述,jsp页面里头<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>类似于这样的使用
敲半天字镇麻烦
参考技术C 是可以的,其实是很简单的,你可以百度HI我,我给你个示例代码,包括tld是运行原理。 参考技术D 23654412598456235356555454525565544266858975659695414125635255698555654456

Swift - 在不同的自定义单元格中按下按钮时如何获取自定义单元格标签的值?

【中文标题】Swift - 在不同的自定义单元格中按下按钮时如何获取自定义单元格标签的值?【英文标题】:Swift - How to get the value of a custom cell label when pressing a button in a different custom cell? 【发布时间】:2018-02-09 09:14:09 【问题描述】:

遇到这个问题有点麻烦。

我有一个动态原型的TableView。 TableView 有 2 个部分。

第 1 部分从 xib 文件加载自定义 TableViewCell。该单元格包含一个步进器和一个标签:

class quantityTableViewCell: UITableViewCell 

 @IBOutlet weak var quantityLabel: UILabel!


 @IBAction func quantityStepper(_ sender: UIStepper) 
    quantityLabel.text = String(Int(sender.value))
 


第 2 部分加载另一个仅包含一个按钮的自定义 TableViewCell:

class addToBasketTableViewCell: UITableViewCell 

 @IBOutlet weak var submitButton: UIButton!


现在,在我的 TableView 类中,两个单元格都加载到各自的部分中,当我单击第二部分中的按钮并将结果打印到控制台时,我想在第一部分中捕获“quantityLabel”的当前值。

例如,如果我将值设置为 5,当我点击“提交按钮”时,它会打印“5”。

我有点不确定如何去做,任何指导都会很棒。下面是正在加载的单元格的副本:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let item: ItemPreBasketModel = cellItems[indexPath.row] as! ItemPreBasketModel

    if indexPath.section == 0 

        let quantityCell = Bundle.main.loadNibNamed("quantityTableViewCell", owner: self, options: nil)?.first as! quantityTableViewCell
        return quantityCell

         else if indexPath.section == 1 

        let addToBasketCell = Bundle.main.loadNibNamed("addToBasketTableViewCell", owner: self, options: nil)?.first as! addToBasketTableViewCell
        return addToBasketCell

    

【问题讨论】:

【参考方案1】:

应该是这样的:

let path = IndexPath(item: 0, section: 0)
let cell = table.cellForRow(at: path) as? quantityTableViewCell
print(cell?.quantityLabel.text)

用您的表格对象替换“表格”。

【讨论】:

【参考方案2】:

您永远不应依赖单元格中的值,因为当用户滚动表格视图时,单元格可能会出现和消失。

相反,您应该将步进器的值存储在模型中,当用户点击按钮时,从模型(而不是任何单元格)中读取值。

所以:

quantityStepper 被调用时,更新标签并通知一些委托(例如托管视图控制器)值已更改。意识到:
    您应该直接从quantityTableViewCell 中更新模型 相反,您应该向某个委托(实现此协议)发送一条消息(= 您自己的协议),告知其值已更改为某个值 委托(可能是您的视图控制器)会将此值存储在某处
addToBasketTableViewCell 被调用时,您还应该将此通知代理。然后,委托(您的视图控制器)将使用他在 3. 中获得的值,并做任何必须做的事情。

通过这种方法,单元格彼此分离。重用单元格没有任何问题,并且可以正确初始化单元格,因为该值始终存储在模型中,并且单元格只显示它。更新总是反映到模型中。

【讨论】:

非常感谢您的详细解释。完全有道理。我将继续执行您的建议。谢谢

以上是关于如何写一个从数据库直接得到数据的自定义标签,然后在jsp页面用标签把数据显示出来。的主要内容,如果未能解决你的问题,请参考以下文章

在SQL中使用自定义函数

创建QGis的自定义DataProvider

thymeleaf-extras-db 0.0.1发布,select标签加载数据的新姿势

如何写自定义 React Hook?

如何在 UITableview 中对齐标签?

如何在 Flutter 中创建像这样的自定义可滑动标签栏?