Messages posted by: artzambrano  XML
Profile for artzambrano -> Messages posted by artzambrano [166] Go to Page: 1, 2, 3  ...  10, 11, 12 Next 
Author Message
Just override the vertical-align setting of the th elements. Try this:

 .ui-datatable th {
     vertical-align: bottom;
Hi, what you describe sounds like a bug, but it's a very complex scenario that wasn't ever considered or brought up by a customer in all these years of developing ICEfaces.

There's one thing you can try, but I'm not 100% sure that it will work. You can try implementing custom hashCode() and equals() methods on your data object for the table. By correctly implementing these custom methods, you preserve the identity of data objects/rows even if they appear at different points/indexes in a data table. This is used for lazy loading, for example, because the index of a data object can change, depending on what is currently loaded, so identifying rows by their index is not reliable, and the way to circumvent this is by implementing custom hashCode() and equals() methods.

You can read more about this on this wiki article (under the header 'Custom hashCode() and equals() Methods'):

Thank you for pointing this out. One of the vulnerabilities was already fixed in this JIRA:


But the other, newer vulnerability wasn't. We investigated it, and it's now fixed, under this JIRA:

There's a demo for that in the showcase:


The key is the 'selectedRowsOnly' attribute in ace:dataExporter.

Hello Maksim_A,

I don't see anything wrong with your markup. Perhaps using JSF 2.3 could have something to do with it, as it's not fully supported yet, but I doubt it has anything to do with it.

Our showcase examples have context menu's with submenus that have labels, and they don't present this issue.

Can you please do this test? Just build the context menu without using c:forEach, maybe just put one or two submenus, and see if you can reproduce the same issue or not.

Hi Chris,

It seems like icecore:defaultAction is just taking precedence over the keydown and keypress events.

I created this JIRA to track this issue:


Meanwhile, I would recommend having the ace:autoCompleteEntry component in a separate form that doesn't have and icecore:defaultAction tag. Just use ace:ajax with execute="@all" and have it perform a listener similar to your performSearch listener.

Hello Shouran,

Sorry I didn't get a notification of your reply. I'm glad you figured it out. It looks pretty good, in my opinion. Good job! Yes, that seems to be the only possibility at the moment for what you intended to do.

This is just the CSS the component has. It's simply a block element, which by default takes all the width available, and the two panes are inline-block elements that will take 50% of the width by default or whatever is specified. So, if the window doesn't provide enough width to fit all the contents of the two panes horizontally, one of the panes will be moved below, because it's set to inline-block display.

So, to avoid this issue, you should set a specific width or a min-width on the split pane itself or on a <div> element containing the split pane component.
Hello Shouran,

You mention that your intention is to do filtering. Do you mean ace:dataTable filtering? If that's the case, you can already do what you describe by using a custom filter facet. You can see a demo in the following link. The Chassis column displays a drop down menu with multiple checkboxes that filter different types of chassis.


If you aren't using a data table, then you could try placing the checkboxes inside an ace:panel that is toggleable (maybe inside an h:panelGrid first for alignment purposes as well). This way you would be able to open and close this panel to display/hide your checkboxes. Maybe you could make this panel absolute-positioned, so it feels more like a drop-down menu.

If you could provide more information about your specific use case, I could provide you with more ideas.

There are no listeners or ajax events for the month change, since it only occurs in the client. However, there's a way to find out the month number by using some Javascript and the jQuery UI API. Here's some code to get you started:

 			<h:inputHidden id="monthValueHolder" value="#{bean.monthNumber}"/>
 			<h:outputText value="#{bean.monthNumber}"/>
 			<script type="text/javascript">
 					var c = ice.ace.instance('form:cal'); // client id of the ace:dateTimeEntry component
 					if (c) {
 						c.jq.datepicker('option', 'onChangeMonthYear', function(year, month) {
 							var monthValueHolder = document.getElementById('form:monthValueHolder');
 							monthValueHolder.value = month;
 							ice.s({}, monthValueHolder);

The idea is to register the onChangeMonthYear event on the jQuery UI datepicker widget (http://api.jqueryui.com/datepicker/#option-onChangeMonthYear) and use it to update a hidden field. Then, we submit the whole form. In the code above, this hidden field will be updated with the month value (1-12) and the form will be submitted, updating its value in the server, and, then, because the value is bound to an h:outputText as well, the value will be displayed on the page. What you want to do is to add a valueChangeListener to the hidden input to do whatever operation you intend to do. You still need to polish and perfect this solution, since you'll have to make sure to re-apply this script if the ace:dateTimeEntry component is reloaded on the page, but this is some good code to get you started.
An improvement JIRA was created to add the functionality you talk about to the ace:dateTimeEntry component.

Thank you for discovering this bug, Giovanni. This JIRA was created to fix it in an upcoming release.


Hi Kenneth,

I would need to see the entire generated markup for that test page to see what ICEfaces resources are being loaded and which aren't. It's hard to tell right now.

Yes, that's correct. You would have to use 'ice.ace.jq' instead of '$' if you want to use our version of jQuery. You could also add your own version of jQuery to work alongside the icefaces' version. That's why we rename ours to 'ice.ace.jq', but I would recommend just using our version of jQuery.

You don't necessarily have to change every occurrence of '$' for 'ice.ace.jq' in your code. You could simply put your code inside an anonymous function that automatically gets executed, which takes an argument that you name '$', then you simply pass 'ice.ace.jq' as the argument. It would look something like this...

 (function($) {
 // your code using $

If your code is more complex, and the approach above wouldn't work for you, you could simply define the global variable '$' to be 'ice.ace.jq', just make sure that this variable declaration occurs after the icefaces' javascript resources have been loaded.
For that to work, you have to declare the ace:dialog component in the same row, preferably in the same column as the button, so that it can have its own unique client id to be accessed by ice.ace.instance and to be able to access that row data specifically.

Profile for artzambrano -> Messages posted by artzambrano [166] Go to Page: 1, 2, 3  ...  10, 11, 12 Next 
Go to:   
Powered by JForum 2.1.7ice © JForum Team