EMPIREDB-306
Allow id on linkTag
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
index ed707d4..eb3a0ad 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
@@ -37,8 +37,11 @@
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
+import org.apache.empire.exceptions.InvalidPropertyException;
+import org.apache.empire.jsf2.app.FacesUtils;
import org.apache.empire.jsf2.controls.InputControl;
import org.apache.empire.jsf2.controls.InputControlManager;
+import org.apache.empire.jsf2.utils.ParameterMap;
import org.apache.empire.jsf2.utils.StringResponseWriter;
import org.apache.empire.jsf2.utils.TagEncodingHelper;
import org.apache.empire.jsf2.utils.TagEncodingHelperFactory;
@@ -83,6 +86,24 @@
private String treeClientId = null;
@Override
+ public void setId(String id)
+ { // empty?
+ if(StringUtils.isEmpty(id))
+ { // Generate unique id
+ Object page = getAttributes().get("page");
+ String outcome = StringUtils.toString(page);
+ if (StringUtils.isEmpty(outcome))
+ throw new InvalidPropertyException("page", page);
+ ParameterMap pm = FacesUtils.getParameterMap(FacesUtils.getContext());
+ id = pm.encodeString(outcome);
+ }
+ // set
+ super.setId(id);
+ // reset record
+ helper.setRecord(null);
+ }
+
+ @Override
public boolean visitTree(VisitContext visitContext, VisitCallback callback)
{
FacesContext context = visitContext.getFacesContext();
@@ -238,6 +259,10 @@
boolean hasColumn = helper.hasColumn();
Object value = getLinkValue(hasColumn);
link.setValue(value);
+ // id
+ String id = getId();
+ if (id.startsWith("j_")==false)
+ link.setId(id+"_a");
// css Style
DataType dataType = (hasColumn ? helper.getColumn().getDataType() : DataType.UNKNOWN);
link.setStyleClass(helper.getTagStyleClass(dataType, null, getLinkStyleClass()));
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
index 26ca141..25af54b 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
@@ -22,6 +22,7 @@
import java.lang.reflect.Method;
import java.sql.Connection;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -224,8 +225,8 @@
public boolean isHasMessages()
{
- List<FacesMessage> msgl = FacesContext.getCurrentInstance().getMessageList();
- return !msgl.isEmpty();
+ Iterator<FacesMessage> fmi = FacesContext.getCurrentInstance().getMessages();
+ return fmi.hasNext();
}
protected void checkPageAccess()
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 40eb08a..312e445 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -605,7 +605,7 @@
public String getColumnName()
{
- return (getColumn()!=null ? column.getName() : "null");
+ return ((this.column=findColumn())!=null ? column.getName() : "null");
}
public void setColumn(Column column)