Problema com update jsf

Pessoal, tenho um problema com update…vou tentar explicar detalhadamente.
Tenho uma tela de cadastro simples com dois campos Silga e País e dois botões de confirmar e cancelar

Quando clico na opção update, a tela é carregada normalmente com a sigla e o nome…
Se eu apago a sigla e modifico o nome do país e clico em confirmar, o sistema me retorna
uma mensagem dizendo que a sigla é obrigatório, até aí está tudo certo!!
O problema está no botão fechar!
Quando faço essa operação deixando a sigla vazia e mofico o nome e confirmo, vem a msg de obrigatoriedade…
o problema é se em seguida eu fecho a tela…
Depois de fechar a tela eu clico no mesmo registro pra fazer update ele tráz a sigla preenchida(correto), mais tráz o nome que foi
alterado, não deveria, pois eu nao confirmei a transação.

Ex: SIgla = Vazia
Nome = mudei de Brasil para Portugal e confirmei, o sistema tráz a msg de obrigatoriedade

Em seguida, fechei a tela e cliquei em update da mesma novamente, ao invés de trazer Brasil, tráz Portugal.
Se eu trocar, deixando o nome vazio e alterar a sigla acontece o mesmo!
Se eu alterar os dois, da certo o update, o problema está em deixar um dos dois vazios.

Código:

[code]<rich:modalPanel id=“editPanel” width=“680” autosized=“true”>
<f:facet name=“header”>
<h:outputText value="#{msg[‘screen.sc_places_country.label.lb_country_header_alterar’]}" />
</f:facet>
<f:facet name=“controls”>
<h:panelGroup>
<h:graphicImage value="/images/modal/close.png" id=“hidelink1” styleClass=“hidelink”/>
<rich:componentControl for=“editPanel” attachTo=“hidelink1” operation=“hide” event=“onclick” />
</h:panelGroup>
</f:facet>
<a4j:form>
<a4j:loadScript src="/js/mask/jquery.maskedinput-1.2.1.js" ></a4j:loadScript>
<rich:messages errorClass=“errorMessage” infoClass=“infoMessage”>
</rich:messages>

						&lt;a4j:outputPanel ajaxRendered="true"&gt;
																
						&lt;h:panelGrid columns="5" styleClass="widthGrid" columnClasses="labelGrid,valueGrid, ,labelGrid,valueGrid"&gt;

									&lt;h:outputText value="*#{msg['screen.sc_places_country.label.lb_country_txShortName']}: " /&gt;
									&lt;h:inputText value="#{countryMBean.country.txShortName1}" size="15" required="true" id="txShortName1" label="#{msg['screen.sc_places_country.label.lb_country_txShortName']}"&gt;
										&lt;f:validateLength minimum="1" maximum="50" /&gt;
									&lt;/h:inputText&gt;
									
									&lt;rich:spacer width="10%"/&gt;							
																			
									&lt;h:outputText value="*#{msg['screen.sc_places_country.label.lb_country_txStatus']}: " /&gt;
									&lt;h:selectOneMenu value="#{countryMBean.country.recordStatus.idRecordStatus}" style="width:120px" required="true" id="idStatus" label="#{msg['screen.country.label.txStatus']}"&gt;
										&lt;f:selectItem itemValue="" itemLabel="#{msg['screen.sc_places_country.label.lb_country_txSelect']}" /&gt;
										&lt;f:selectItems value="#{recordStatusMBean.rsList}" /&gt;
									&lt;/h:selectOneMenu&gt;
																		
								&lt;/h:panelGrid&gt;
								
								&lt;h:panelGrid columns="2" styleClass="widthGrid" columnClasses="labelGrid,fieldName"&gt;
									
									&lt;h:outputText value="*#{msg['screen.sc_places_country.label.lb_country_txLongName']}:"  /&gt;
									&lt;h:inputText immediate="false" value="#{countryMBean.country.txLongName1}" size="59" required="true" id="txLongName1" label="#{msg['screen.sc_places_country.label.lb_country_txLongName']}"&gt;
										&lt;f:validateLength minimum="1" maximum="255" /&gt;
									&lt;/h:inputText&gt;
																												
								&lt;/h:panelGrid&gt;
								
								&lt;rich:spacer height="20"/&gt;
								&lt;rich:separator height="2" lineType="solid" /&gt;	
								&lt;h:outputText value="#{msg['screen.sc_places_country.message.msg_campo_obrigatorio']}"/&gt;
								&lt;rich:spacer height="10"/&gt;
								
								<p >
									&lt;h:panelGrid columns="2" styleClass="buttons"&gt;
										&lt;a4j:commandButton 
											value="#{msg['screen.sc_places_country.button.bt_confirmar']}" 
											action="#{countryMBean.save}"
											reRender="countryDataTableList"
											oncomplete="if (#{facesContext.maximumSeverity==null}) #{rich:component('editPanel')}.hide();"&gt;
										&lt;/a4j:commandButton&gt;
										&lt;a4j:commandButton 
											value="#{msg['screen.sc_places_country.button.bt_fechar']}" 
											action="#{countryMBean.novo}"
											onclick="#{rich:component('editPanel')}.hide();return false;" &gt;
										&lt;/a4j:commandButton&gt;	
									&lt;/h:panelGrid&gt; 
								</p>
						&lt;/a4j:outputPanel&gt;
				&lt;/a4j:form&gt;
		    &lt;/rich:modalPanel&gt;  

[/code]

Poste seu managedbean.

Ok markin1 … aí está o managedBean

[code]package com.tti.hd3web.register.faces;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import com.tti.hd3web.register.facade.CountryFacade;
import com.tti.hd3web.register.model.City;
import com.tti.hd3web.register.model.Country;
import com.tti.hd3web.register.model.State;
import com.tti.richfaces.InfraConstants;
import com.tti.richfaces.UserInfo;
import com.tti.richfaces.i18n.I18nMessagesUtil;

public class CountryManagedBean {
private Country country;
private String txLongName1Filter = “”;

List<SelectItem> optionList = new ArrayList<SelectItem>();

public String getTxLongName1Filter() {
	return txLongName1Filter;
}
public void setTxLongName1Filter(String txLongName1Filter) {
	this.txLongName1Filter = txLongName1Filter;
}
public Country getCountry() {
	return country;
}
public void setCountry(Country country) {
	this.country = country;
}
private CountryFacade countryFacade;

	
public CountryFacade getCountryFacade() {
	return countryFacade;
}
public void setCountryFacade(CountryFacade countryFacade) {
	this.countryFacade = countryFacade;
}
public void create(){
try{	
	this.country.setDtCreation(new Date());
	Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
	UserInfo userInfo = (UserInfo) sessionMap.get(InfraConstants.USER_INFO_SESSION_KEY);
	this.country.getSecContext().setIdSecContext(userInfo.getContext().getIdSecContext());
	//this.country.setIdSecContext(userInfo.getContext().getIdSecContext());
	countryFacade.insertCountry(this.country);
	this.country = new Country();
	message();
	}catch (Exception e) {
		e.printStackTrace();
	}
}
public List<Country> getList() {
	return countryFacade.listCountry("%" + this.txLongName1Filter.toUpperCase() + "%");
}
public void novo() {
	this.country = new Country();
}

public void save() {
	if (this.country.getIdCountry() == null) {
		create();
	} else {
		update();
	}
	
	//limpa os campos
	//this.country = new Country();
	
	
}
	
public void update() {
	country.setDtModify(new Date());
	countryFacade.updateCountry(this.country);
}

public void delete() {
	try {
		countryFacade.deleteCountry(this.country);
	} catch (Exception e) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage("teste", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possível excluir!\nO registro pode estar sendo usado em outros cadastros.", "iiiiiiiiiii"));
		Iterator<FacesMessage> it = context.getMessages();

	}
}
	
public List<Country> getListAll() {
	return countryFacade.listCountry("%%");
}

public List<SelectItem> getCountryListOptions() {
	List<SelectItem> optionList = new ArrayList<SelectItem>();
	
	List<Country> list = getListAll();
	for (Iterator<Country> iterator = list.iterator(); iterator.hasNext();) {
		Country country = (Country) iterator.next();
		optionList.add(new SelectItem(country.getIdCountry(), country.getTxLongName1()));
	}
	
	return optionList;
}

public void message(){
	FacesContext context = FacesContext.getCurrentInstance();
	String updateMsg = I18nMessagesUtil.getSimpleMessageString("screen.msgs_popup.message.txMsgUpdate", context);
	String createMsg = I18nMessagesUtil.getSimpleMessageString("screen.msgs_popup.message.txMsgInsert", context);
	if(this.country.getIdCountry() != null){							
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,updateMsg,"");
		context.addMessage("editPanel",message);
	}else{
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,createMsg,"");
		context.addMessage("editPanel",message);
	}
	
}

public List<Country> listAll() {
	return countryFacade.listCountry("%%");
}

public List<SelectItem> getOptionList() {
	optionList = new ArrayList<SelectItem>();

	List<Country> liststate = listAll();
	
	for (Iterator<Country> iterator = liststate.iterator(); iterator.hasNext();) {
		Country country= (Country) iterator.next();
		optionList.add(new SelectItem(country.getIdCountry(),country.getTxLongName1()));
	}
	
	return optionList;
}

public List<SelectItem> getOptionsListToCountry() {
	
	optionList = new ArrayList<SelectItem>();

	List<Country> liststate = listAll();
	
	for (Iterator<Country> iterator = liststate.iterator(); iterator.hasNext();) {
		Country country= (Country) iterator.next();
		if(country.getRecordStatus().getIdRecordStatus()==1){
			optionList.add(new SelectItem(country.getIdCountry(),country.getTxLongName1()));
		}
	}
	
	return optionList;
}

}
[/code]

Alguma sugestão pessoal??