[sample]JSF2.selectOneMenu.value.pojo.converter

package eulerlcs.jsf2sample.webapp.converter;

import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItem;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named;

import eulerlcs.jsf2sample.model.DataIdentifier;

/**
 * pojo value converter
 */
@Named("EntityConverter")
@RequestScoped
public class EntityConverter implements Converter
{

	/**
	 * {@inheritDoc}
	 *
	 * @param facesContext {@inheritDoc}
	 * @param uiComponent {@inheritDoc}
	 * @param paramString {@inheritDoc}
	 * @return {@inheritDoc}
	 */
	@Override
	public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String paramString)
	{
		if (uiComponent.getChildren() == null || uiComponent.getChildren().size() == 0)
		{
			return null;
		}

		if (paramString == null)
		{
			return null;
		}

		for (UIComponent child : uiComponent.getChildren())
		{
			if (child instanceof UISelectItem)
			{
				if (!((UISelectItem)child).isNoSelectionOption()
						&& paramString.equals(this.getAsString(facesContext, uiComponent, ((UISelectItem)child).getValue())))
				{
					return ((UISelectItem)child).getValue();
				}
			}

			if (child instanceof UISelectItems)
			{
				List<?> list = (List<?>)((UISelectItems)child).getValue();
				for (Object item : list)
				{
					if (paramString.equals(this.getAsString(facesContext, uiComponent, item)))
					{
						return item;
					}
				}
			}
		}

		return null;
	}

	/**
	 * {@inheritDoc}
	 *
	 * @param facesContext {@inheritDoc}
	 * @param uiComponent {@inheritDoc}
	 * @param paramObject {@inheritDoc}
	 * @return {@inheritDoc}
	 */
	@SuppressWarnings("rawtypes")
	@Override
	public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object paramObject)
	{
		String result = "";

		if (paramObject == null)
		{
			result = "";
		}
		else if (paramObject instanceof DataIdentifier)
		{
			result = ((DataIdentifier)paramObject).getId().toString();
		}

		return result;
	}
}

 

posted on 2016-06-17 17:41  eulerlcs  阅读(49)  评论(0)    收藏  举报

导航