All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zkoss.web.servlet.dsp.action.Out Maven / Gradle / Ivy

There is a newer version: 10.0.0-jakarta
Show newest version
/* Out.java

	Purpose:
		
	Description:
		
	History:
		Tue Sep  6 16:10:51     2005, Created by tomyeh

Copyright (C) 2005 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
	This program is distributed under LGPL Version 2.1 in the hope that
	it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.web.servlet.dsp.action;

import java.io.IOException;

import org.zkoss.web.mesg.MWeb;
import org.zkoss.web.servlet.dsp.DspException;
import org.zkoss.xml.XMLs;

/**
 * Generates the specified value into a string.
 *
 * @author tomyeh
 */
public class Out extends AbstractAction {
	private String _value = null;
	private int _maxlength;
	private boolean _escapeXML = true;
	private boolean _nbsp;
	private boolean _pre;

	/** Returns whether to escape XML.
	 * Default: true.
	 */
	public boolean getEscapeXML() {
		return _escapeXML;
	}

	/** Sets whether to escape XML.
	 */
	public void setEscapeXML(boolean escapeXML) {
		_escapeXML = escapeXML;
	}

	/** Returns whether to generate   if the content is empty.
	 * Default: false.
	 */
	public boolean getNbsp() {
		return _escapeXML;
	}

	/** Sets whether to generate   if the content is empty.
	 */
	public void setNbsp(boolean nbsp) {
		_nbsp = nbsp;
	}

	/** Returns the value.
	 * Default: null.
	 */
	public String getValue() {
		return _value;
	}

	/** Sets the value.
	 */
	public void setValue(String value) {
		_value = value;
	}

	/** Returns the maxlength of bytes to output.
	 * 

Default: 0 (no limit). */ public int getMaxlength() { return _maxlength; } /** Sets the maxlength to output. */ public void setMaxlength(int maxlength) { _maxlength = maxlength; } /** * Sets whether to preserve the white spaces, such as space. * @since 3.6.3. */ public void setPre(boolean pre) { _pre = pre; } /** * Returns whether to preserve the white spaces, such as space. *

Default: false; * * @since 3.6.3. */ public boolean isPre() { return _pre; } //-- Action --// public void render(ActionContext ac, boolean nested) throws DspException, IOException { if (!isEffective()) return; if (nested) throw new DspException(MWeb.DSP_NESTED_ACTION_NOT_ALLOWED, new Object[] { this, new Integer(ac.getLineNumber()) }); int len = _value != null ? _value.length() : 0; if (len == 0 || (_nbsp && _value.trim().length() == 0)) { if (_nbsp) ac.getOut().write(" "); return; } String value = _value; if (_maxlength > 0 && len > _maxlength) { int j = _maxlength; while (j > 0 && Character.isWhitespace(value.charAt(j - 1))) --j; value = value.substring(0, j) + "..."; } if (_escapeXML) { StringBuffer sb = null; len = value.length(); for (int j = 0; j < len; ++j) { final char cc = value.charAt(j); final String replace; if (_pre && cc == ' ') replace = " "; else replace = XMLs.escapeXML(cc); if (replace != null) { if (sb == null) { sb = new StringBuffer(value.length() + 10); sb.append(value.substring(0, j)); } sb.append(replace); } else if (sb != null) { sb.append(cc); } } if (sb != null) value = sb.toString(); } ac.getOut().write(value); } //-- Object --// public String toString() { return "out"; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy