Skin Bean, Skin dinamico

3 respostas
mateusprado

Ola pessoal.
estou com uma duvida, como criar uma forma de alterar o skin do rich-faces atraves de um commandLink, por exmplo?

Tipo, passando como parametros ruby, wine, classic, etccc

consegui chegar até aqui:

public class skinBean {

	private String skin = "wine";

	public String getSkin() {
		return skin;
	}

	public void setSkin(String skin) {
		this.skin = skin;
	}

}

meu xml:

<context-param>
    <param-name>org.richfaces.SKIN</param-name>
    <!--<param-value>DEFAULT</param-value>-->
    <!--<param-value>plain</param-value>-->
    <!--<param-value>emeraldTown</param-value>-->
    <!--<param-value>blueSky</param-value>-->
    <!--<param-value>wine</param-value>-->
    <!--<param-value>japanCherry</param-value>-->
    <!--<param-value>ruby</param-value>-->
    <!--<param-value>classic</param-value>-->
    <!--<param-value>deepMarine</param-value>-->
    <param-value>#{skinBean.skin}</param-value>
  </context-param>

desde ja, valeu

3 Respostas

lucianotome

Declara um ManageBean no seu faces-config.xml

<managed-bean>
	<managed-bean-name>skinBean</managed-bean-name>
	     <managed-bean-class>
		br.com.sansoftware.util.SkinBean
	     </managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

Crie um ManageBean

public class SkinBean implements Serializable {
	private static final long serialVersionUID = -2399884208294434812L;
	private String skin="blueSky";

	public String getSkin() {
		String param = getSkinParam();
		if (param!=null) {
			setSkin(param);
		}
		return skin;
	}
	public void setSkin(String skin) {
		this.skin = skin;
	}
	
	private String getSkinParam(){
		FacesContext fc = FacesContext.getCurrentInstance();
		String param = (String) fc.getExternalContext().getRequestParameterMap().get("s");
		if (param!=null && param.trim().length()>0) {
			return param;
		} else {
			return null;
		}
	}

}

Chama ele assim

<h:commandLink>
        <a4j:actionparam name="skin" value="blueSky"  assignTo="#{skinBean.skin}" submitMode="ajax"/>
        <h:graphicImage value="/img/bluesky.png" style="border: none" />
</h:commandLink>

<a4j:htmlCommandLink>
        <a4j:actionparam name="skin" value="classic"	assignTo="#{skinBean.skin}" />
         <h:graphicImage value="/img/classic.png" style="border: none" />
</a4j:htmlCommandLink>

felipe.sodre

cara muito bom valew!!!

dreampeppers99

lucianotome:
Declara um ManageBean no s…

lucianotome, seguinte você está usando facelets?

Eu estou tendo um problema terrível com o componente datascroller e rich:dataTable… por exemplo esse commandLink (ou Button) nas colunas … executam perfeitamente o action na primeira página… porém quando vou pra page#2 e clico … ele não executa a action (aparetemente não mostra erro nem nada) e volta pra page#1. :S

Criado 18 de março de 2008
Ultima resposta 1 de jul. de 2010
Respostas 3
Participantes 4