Blz, vou tentar da uma dica melhor
1 - criar a classe wrapper:
//algo assim
public class ItemWrapper{
private Item item; // seu item do banco
private boolean mostrarNoEmail; // este cara aqui vai te ajudar na hora do usuario escolher quais itens quer mostra no email
}
2- no bean
//este aqui é o tem bean
//este método vai fazer que vc recupere do banco os itens e que vc monte uma lista de itemwrapper
public void montarArrayItem(){
List<Item> arrayItem = métodoQueListaItemDoBanco;
//esta lista aqui tem que ser um atributo do bean para poder depois pegar os itens selecionados ai vc coloca get e set e tals...
List<ItemWrapper> itensWrapper = new ArrayList<ItemWrapper>();
for(Item item : arrayItem){
ItemWrapper iw = new ItemWrapper(item , false); // no inicio todos os itemwrapper tem que ser falso , pois o cliente ainda não escolheu
itensWrapper.add(iw);
}
//agora vc montou sua lista de itens wrapper
}
3- na view
bom aqui vc vai criar um datatable com a lista de itenswrapper e vc vai colocar o nome do item e o checkbox que vai ser o valor true ou false;
<h:dataTable value="#{bean.listaItemWrapper}" var="row">
<h:column>
<h:selectBooleanCheckboxt value="#{row.mostrarNoEmail}"
</h:column>
<h:column>
<h:outputText value="#{row.item.descricao}"
</h:column>
</h:dataTable>
<h:commandButton action="#{bean.metodoMostrarEmailPronto}" />
aqui vc vai no método do bean e vai verificar quais itens estao marcados e criar o html propriamente dito e depois mostrar em um modalPanel ( rich:faces )
public void mostrarEmail(){
String email = ""; //seria bom usar StringBuffer, mas como é só um exemplo... vc pode criar um arquivo de propriedade com o corpo do email pronto e criar textos a serem substituidos tipo {itensAqui}<br/>
// assim vc vai poder dar um replace onde tiver {itensAqui}
email = properties.corpoEmail;
String itensFormatados = "";
for(ItemWrapper iw : this.itensWrapper){
if(iw.isMostrarEmail){
itensFormatados += "Nome item " + iw.getItem.getDescricao + "<br/>";
}
}
email = email.replace("{itensAqui}" , itensFormatados); // aqui vc vai ter uma string com o html do email e agora é só mostrar para o usuario se é isto que ele quer
}
7- vc pode colocar dois botoes, tipo enviar email e cancelar
o enviar email vai enviar e o cancelar volta para a lista de itens para o usuario selecionar novamente
tem um exemplo aqui sobre enviar email
Tutorial: Enviando emails com Java pelo Paulo Silveira
http://www.guj.com.br/content/articles/email/Spammer.txt
bom acho que com isto seus problemas acabaram ehehehe
mas qualquer dúvida posta ai.