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#4060043
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060043
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user