📄 threadtag.java
字号:
/** * $Header: /home/coolserv/.cvs/coolserv/jive/source/taglib/com/coolservlets/forum/tags/ThreadTag.java,v 1.5 2000/12/17 14:15:17 gnielsen Exp $ * $Revision: 1.5 $ * $Date: 2000/12/17 14:15:17 $ * * Copyright (C) 2000 CoolServlets.com. All rights reserved. * * =================================================================== * The Apache Software License, Version 1.1 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by * CoolServlets.com (http://www.coolservlets.com)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Jive" and "CoolServlets.com" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please * contact webmaster@coolservlets.com. * * 5. Products derived from this software may not be called "Jive", * nor may "Jive" appear in their name, without prior written * permission of CoolServlets.com. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of CoolServlets.com. For more information * on CoolServlets.com, please see <http://www.coolservlets.com>. */package com.coolservlets.forum.tags;import java.io.*;import java.util.*;import java.text.*;import javax.servlet.*;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import javax.servlet.http.*;import com.coolservlets.forum.*;import com.coolservlets.forum.tags.*;/** * JSP Tag <b>thread</b>, used to get information about current thread. * <p> * Requires that attribute <b>id</b> be set to the name of a * script variable for later use in JSP to retrieve Thread data * using <jsp:getProperty/>. * <p> * Gets the current thread from within a <b>thread_loop</b> tag or * the current thread from the user state information. * <p> * The <b>move_thread</b> or <b>move_message</b> tag can be used * nested within the <b>thread</b> tag to move a thread to a * different forum or move the thread message as a reply to another * forum thread message. * <p> * JSP Tag Lib Descriptor * <p><pre> * <name>thread</name> * <tagclass>com.coolservlets.forum.tags.ThreadTag</tagclass> * <teiclass>com.coolservlets.forum.tags.ThreadTEI</teiclass> * <bodycontent>JSP</bodycontent> * <info>Get the current thread data</info> * <attribute> * <name>id</name> * <required>true</required> * <rtexprvalue>false</rtexprvalue> * </attribute> * </pre> * * @see ThreadLoopTag * @see MoveThreadTag * @see MoveMessageTag * @see JiveRequest * @see JiveState * @see NewMessages * @see ChangeForum * @see GetNestedMessage * * @author Glenn Nielsen */public class ThreadTag extends TagSupport implements GetNestedMessage, ChangeForum, NewMessages{ private ForumThread ct = null; private JiveRequest jr = null; private JiveState js = null; // ID's of previous and next thread for use as a navigation aide private int prevThreadID = -1; private int nextThreadID = -1; // Move thread or thread message to another forum variables private Forum mf = null; private int mtid = 0; private int mmid = 0; /** * Method called at start of thread Tag to get Thread * * @return EVAL_BODY_INCLUDE if there is a thread or SKIP_BODY if there is not a thread to view */ public final int doStartTag() throws JspException { // Get the user state information js = (JiveState)pageContext.getAttribute("jiveUserState", PageContext.SESSION_SCOPE); if( js == null ) { throw new JspException("Jive thread tag could not get jive state."); } // Get the user request information jr = (JiveRequest)pageContext.getAttribute("jiveUserRequest", PageContext.REQUEST_SCOPE); if( jr == null ) throw new JspException("Jive thread tag, could not find request"); // See if we are nested inside a thread_loop tag ThreadLoopTag tl = null; try { tl = (ThreadLoopTag)this.findAncestorWithClass(this, Class.forName("com.coolservlets.forum.tags.ThreadLoopTag")); } catch(Exception e) { } if( tl != null ) { ct = tl.getThread(); } else { // Get the thread from user state information ct = jr.getThread(); } if( ct == null ) return SKIP_BODY; // Get the next and previous thread ID's just in case they are needed Iterator thrit = jr.getForum().threads(); int nextid; int previd = -1; while( thrit.hasNext() ) { nextid = ((ForumThread)thrit.next()).getID(); if( nextid == ct.getID() ) { prevThreadID = previd; if( thrit.hasNext() ) nextThreadID = ((ForumThread)thrit.next()).getID(); break; } previd = nextid; } // Save the script variable so JSP author can access thread data pageContext.setAttribute(id,this,PageContext.PAGE_SCOPE); return EVAL_BODY_INCLUDE; } /** * Used by MessageTag, WalkTag, and MoveThreadTag to get current ForumThread * * @return ForumThread */ public final ForumThread getThread() { return ct; } /** * Thread ID property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="threadid"/> * * @return String - thread ID */ public final String getThreadid() { return "" + ct.getID(); } /** * Thread MessageCount property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="messagecount"/> * * @return String - thread MessageCount */ public final String getMessagecount() { return "" + ct.getMessageCount(); } /** * Thread Message Replies property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="messagereplies"/> * * @return String - thread Message Replies */ public final String getMessagereplies() { return "" + (ct.getMessageCount() - 1); } /** * Return total number of messages in thread, required by * GetNestedMessage. * * @return String - thread MessageCount */ public final int getTotal() { return ct.getMessageCount(); } /** * Thread Name property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="name"/> * * @return String - thread Name */ public final String getName() { return ct.getName(); } /** * Forum Name property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="forumName"/> * * @return String - name of the forum this thread is in */ public final String getForumName() { return ct.getForum().getName(); } /** * Forum ID property which can be obtained by the JSP page * using <jsp:getProperty name=<i>"id"</i> property="forumid"/> * * @return String - id of the forum this thread is in */ public final String getForumid() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -