@Override protected void setProperties(UIComponent component) { super.setProperties(component); UIStub componentStub = (UIStub) component; Application application = getFacesContext().getApplication(); // Action if (mAction != null) { if (!isValueReference(mAction)) { throw MetawidgetException.newException("Action '" + mAction + "' must be an EL expression"); } componentStub.setAction(application.createMethodBinding(mAction, null)); } // Value if (mValue != null) { if (!isValueReference(mValue)) { throw MetawidgetException.newException("Value '" + mValue + "' must be an EL expression"); } componentStub.setValueBinding("value", application.createValueBinding(mValue)); } // Attributes if (mStubAttributes != null) { if (isValueReference(mStubAttributes)) { componentStub.setValueBinding( "stubAttributes", application.createValueBinding(mStubAttributes)); } else { componentStub.setStubAttributes(mStubAttributes); } } }
/** * Overridden to process <code>int</code>s using <code>Resources.getIdentifier</code> * * <p>Resource strings should be of the form <code>@style/section</code>. */ @Override protected Object createNative(String name, Class<?> namespace, String recordedText) throws Exception { if ("int".equals(name) && recordedText.startsWith("@")) { Resources resources = mContext.getResources(); int id = resources.getIdentifier(recordedText, null, null); if (id == 0) { throw MetawidgetException.newException( "Resource.getIdentifier returns 0 for " + recordedText); } return id; } return super.createNative(name, namespace, recordedText); }