Hello!
I'm afraid I have deleted my latest version of icefaces. As I have already
written I stopped using it. I do have a patch for the request parameter issue
described in the link. I think it is somewhat cleaner:
| diff -uNr
icefaces.orig/core/src/com/icesoft/faces/context/BridgeExternalContext.java
icefaces.patched/core/src/com/icesoft/faces/context/BridgeExternalContext.java
| ---
icefaces.orig/core/src/com/icesoft/faces/context/BridgeExternalContext.java
2006-11-23 14:30:42.000000000 +0100
| +++
icefaces.patched/core/src/com/icesoft/faces/context/BridgeExternalContext.java
2006-12-31 01:29:31.265625000 +0100
| @@ -433,9 +433,12 @@
| * in the List is returned.
| */
|
| +
| /**
| * populate the underlying hashtable
| */
| +
| + // FIXME: Remove this method. Not needed anymore.
| public synchronized void populateRequestParameters(Map
requestParameters) {
| Map valuesMap = getRequestParameterValuesMap();
| if (valuesMap == null) {
| @@ -447,15 +450,59 @@
| filterRequestParameterMap();
| }
|
| + public synchronized void populateRequestParameters() {
| +
| + // Only do this if it has not been done before
| + if (requestParameterValuesMap == null) {
| +
| + requestParameterValuesMap = new RequestParameterValuesMap();
| +
| + if (null != servletRequest) {
| + Enumeration names =
servletRequest.getParameterNames();
| + while (names.hasMoreElements()) {
| + String name = (String)
names.nextElement();
| + requestParameterValuesMap.put(name,
servletRequest.getParameter(name));
| + }
| + } else if (null != portletRequest) {
| + Enumeration names =
portletRequest.getParameterNames();
| + while (names.hasMoreElements()) {
| + String name = (String)
names.nextElement();
| + requestParameterValuesMap.put(name,
portletRequest.getAttribute(name));
| + }
| + }
| +
| + requestParameterMap = new Hashtable();
| +
| + Iterator parameterNames =
requestParameterValuesMap.keySet().iterator();
| + Object nextParameterName = null, nextParameterValue =
null;
| + while (parameterNames.hasNext()) {
| +
| + nextParameterName = parameterNames.next();
| + nextParameterValue =
requestParameterValuesMap.get(nextParameterName);
| + nextParameterValue = ((String[])
nextParameterValue)[0];
| + requestParameterMap.put(nextParameterName,
nextParameterValue);
| + }
| +
| +
| +
| + }
| +
| + }
| +
| private Map requestParameterMap;
|
| public Map getRequestParameterMap() {
| - if (requestParameterMap != null) {
| - return requestParameterMap;
| +
| + if (requestParameterMap == null) {
| +
| + populateRequestParameters();
| +
| }
| - return requestParameterMap = new Hashtable();
| +
| + return requestParameterMap;
| }
|
| + // FIXME: Remove this method. Not needed anymore.
| private void filterRequestParameterMap() {
| if (requestParameterMap == null) {
| requestParameterMap = new Hashtable();
| @@ -479,10 +526,16 @@
| /**
| * returns null if you didn't first call populateRequestParameters.
| * No it doesn't. Can't do that. Returns an empty map if populate
hasn't
| - * been called.
| + * been called.
| */
| public Map getRequestParameterValuesMap() {
| -
| +
| + if (requestParameterValuesMap == null) {
| +
| + populateRequestParameters();
| +
| + }
| +
| return requestParameterValuesMap;
| }
|
| @@ -996,9 +1049,12 @@
|
| }
|
| +
| +// FIXME: Does this inherit from AbstractMap or does it use a delegate?
Plz not both!!!
| +// FIXME: According to spec this should be immutable.
| class RequestParameterValuesMap extends AbstractMap {
|
| - private Hashtable map = new Hashtable();
| + private Map map = new Hashtable();
|
| public Object get(Object key) {
| if (key == null) {
|
I just checked in the original sources: The request parameters bug I fixed was
somewhere else. The reason it crashed was exactly the same. Ithink in your
case it is:
|
| facesContext.getExternalContext().getRequestParameterMap()
| .put("viewNumber", String.valueOf(viewNumber));
|
|
Not sure what this is suppsoed to mean but according to specs you must not
put additional values to the RequestParamterMap. If you have fixed this you
will find another piece of code where icefaces puts some attribute in to the
map to notify another component internally that this is a seam request.
The conclusion I drew from this mess is not to use Icefaces (yet!). I hope this
helps you a little.
Regards
Felix
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4001787#4001787
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4001787
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user