Is it possible to implement a hibernate validator with this functionality (run a query to
determine uniqueness)? It's not clear from looking at the hibernate validator docs
how i would inject a persistence context to use.
BTW, I got the above strategy to work, but had to change a few things to get it to
validate the unique property field itself. It wasn't clear how to set up the view to
validate the *entire* object.
| @Name("clusterConfigUniqueValidator")
| @Validator
| @Transactional
| public class ClusterConfigUniqueNameValidator implements
javax.faces.validator.Validator, Serializable{
| @In
| EntityManager entityManager;
|
| @In EntityHome<ClusterConfig> clusterConfigHome;
|
| public void validate(FacesContext facesContext, UIComponent component,
| Object value) throws ValidatorException {
| String name = (String) value;
| ClusterConfig cc = clusterConfigHome.getInstance();
| try {
| ClusterConfig cc1 = (ClusterConfig) entityManager.createQuery("select cc from
ClusterConfig cc where cc.name = :name")
| .setParameter("name", name).getSingleResult();
| if (cc1 != null && !cc1.getId().equals(cc.getId())) {
| throw new ValidatorException(new FacesMessage("Name must be unique"));
| }
| } catch (NoResultException nre) {
| // that's fine - this name is unique.
| }
| }
|
| }
|
| And then on the edit page:
|
| <s:decorate id="nameDecoration"
template="layout/textField.xhtml">
| <ui:define name="label">Name:</ui:define>
| <h:inputText fieldIdBase="name" id="name"
value="#{clusterConfig.name}" required="true">
| <f:validator validatorId="clusterConfigUniqueValidator"/>
| <s:validate/>
| </h:inputText>
| </s:decorate>
|
|
Also, what about dealing with SQLException when you delete something and violate a foreign
key constraint? Does anybody have a recommendation for how to avoid this gracefully?
Should I not display the delete link/button on my list page if it's referenced (which
would require an extra query per entity listed)? Write a custom exception handler in
pages.xml to catch SQLException and a custom error page/handler that somehow parses the
message?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060043#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...