setValue and getValue selectOneChoice
Jdev 11.1.1.7
try the following code:
Have a selectOneChoice as:
< af:selectOneChoice value = "#{bindings." ApplicationsVO1.inputValue}.
label = "Select the Application" autoSubmit = 'true '.
required = "#{bindings." ApplicationsVO1.hints.mandatory}.
shortDesc = "#{bindings." ApplicationsVO1.hints.tooltip}.
ID = "soc1.
Binding = "#{pageFlowScope.CRoleARoleBean.applicationSOC}" >
< f: selectItems value = "#{bindings." ApplicationsVO1.items}.
ID = "si1" / >
< / af:selectOneChoice >
The following execution time:
"String temp = getApplicationSOC () .getValue ()! = null? getApplicationSOC () .getValue () m:System.NET.SocketAddress.ToString ():" ";" "
getApplicationSOC () .setValue (temp);
Basically, to get the value and set the same value but get following error message:
< SimpleSelectOneRenderer > < _getSelectedIndex > could not find selected corresponding to the "9" value item < index of the selected item > in RichSelectOneChoice [UIXEditableFacesBeanImpl, id = soc1]
What is the problem with this approach?
This is the right way to do:
"String appId = getApplicationSOC () .getValue ()! = null? getApplicationSOC () .getValue () m:System.NET.SocketAddress.ToString ():" ";" "
int appIdInt = Integer.parseInt (! appId.equals("")? appId: "0");
getApplicationSOC () .setValue (appIdInt);
SetValue would recognize that if a whole and not a string that is the reason why I was getting
Tags: Java
Similar Questions
-
Scenario of two parents SelectoneChoice and child selectOneChoice
Hello
I use jdev 11.1.1.5
I use selectOneChoice cascading. Everything is working fine.but I had another requirement. I have search Vo, that have all of the transient attributes.
few attribute this choice VO have LOV. For example
I have childLov1 and parent1 lov. ChildLov1 have views on the criteria that is passed by the attribute of parentLov1.Now I have an another parentLov2 which is almost identical to parentLov1.
My use case is updated on the basis of parentLov1 or parentLov2 childLov1. Setting a day will come from parentLov1 or, sometimes, parentLov2
How to get there?
All three lov of a VO research? Please suggest?
I solved this problem using the variable layout application session
-
[BUG]? SelectOneChoice ValueChangeListener works for all elements except one
Hello
I have a SelectOneChoice that displays a warning in different languages.
I have a LOV to select and an input field to display the warning.
Everything works to display the following warning language except for the first choice in the SelectOneChoice.
Here is the method in my bean
Here's the LOVpublic void languageSelectOne_valueChanged(ValueChangeEvent valueChangeEvent) { //Update the model this.setValueToEL("#{bindings.PageLanguage.inputValue}", valueChangeEvent.getNewValue()); log.info("Selected Value: " + JSFUtils.resolveExpression("#{bindings.PageLanguage.attributeValue}")); log.info("Display Value: " + JSFUtils.resolveExpression("#{bindings.PageLanguage.selectedValue ne ' ' ? bindings.PageLanguage.selectedValue.attributeValues[0] : ''}")); BindingContainer bindings = ADFUtils.getBindingContainer(); DCIteratorBinding iter = (DCIteratorBinding) bindings.get("DisclaimerIterator"); ViewObject disclaimerVo = iter.getViewObject(); Integer langChosen = Integer.parseInt((String) JSFUtils.resolveExpression("#{bindings.PageLanguage.attributeValue}")); Object[] keys = new Object[1]; keys[0] = langChosen; Row[] disclaimerRow = disclaimerVo.findByKey(new Key(keys), -1); log.info("Rows returned: " + disclaimerRow.length); BlobDomain languageText = (BlobDomain) disclaimerRow[0].getAttribute("PageText"); log.info("Page Text length: " + languageText.getLength()); try { log.info(new String(languageText.getBytes(1, (int) languageText.getLength()), "UTF-8")); this.getDisclaimerText().setValue(new String( languageText.getBytes (1, (int) languageText.getLength() ),"UTF-8")); this.getLangChoice().setLabel((String)disclaimerRow[0].getAttribute("ChooseLanguageText")); this.getDisclaimerButton().setText((String) disclaimerRow[0].getAttribute("AgreeButtonText")); } catch (JboException jboe) { log.severe(jboe.getMessage()); } catch (Exception e) { log.severe(e.getMessage()); } AdfFacesContext.getCurrentInstance().addPartialTarget(getDisclaimerText()); AdfFacesContext.getCurrentInstance().addPartialTarget(getLangChoice()); AdfFacesContext.getCurrentInstance().addPartialTarget(getDisclaimerButton()); }
And here is the VOSELECT EPSS_WELCOME_PAGE.PAGE_LANGUAGE PAGE_LANGUAGE, EPSS_WELCOME_PAGE.PAGE_ID PAGE_ID, EPSS_WELCOME_PAGE.PAGE_DEFAULT FROM EPSS_WELCOME_PAGE
I have a beforePhase method that set the SelectOneChoice to the first element in the listSELECT EpssWelcomePageEO.PAGE_ID, EpssWelcomePageEO.PAGE_LANGUAGE, EpssWelcomePageEO.PAGE_TEXT, EpssWelcomePageEO.PAGE_DEFAULT, EpssWelcomePageEO.CHOOSE_LANGUAGE_TEXT, EpssWelcomePageEO.AGREE_BUTTON_TEXT FROM EPSS_WELCOME_PAGE EpssWelcomePageEO ORDER BY PAGE_DEFAULT DESC, PAGE_LANGUAGE
The default language is English.// Before Phase method to set the default language in the selectOneChoice public void defaultSelectionOnLoad(PhaseEvent phaseEvent) { RichSelectOneChoice soc; soc = (RichSelectOneChoice) JSFUtils.findComponentInRoot("langChoice"); if (soc != null && soc.getValue() == null) soc.setValue(new Integer(0)); }
The first time the page is rendered, the warning in English and the selectOneChoice is IN.
I choose different languages in the list and everything works as expected. Then I try to display again the English version, and the newspaper returns a zero on the next line
Even if the length of the LOB is equal to 1475 characterslog.info(new String(languageText.getBytes(1, (int) languageText.getLength()), "UTF-8"));
Now if I change the ranking in my query the native language is Bulgarian.
The warning is made correctly, switching between languages, and then re - click the first choice (Bulgarian) returns a null value for the waiver.
The problem has something to do with the first choice in the list.
Thanks a lot for your help.
Kind regards
Senecaux
Published by: Stessy.Delcroix on June 1, 2011 14:33The ValueChangeListener does not fire when the value is back to the original value. It's expected behaviour (i.e. it is how the JSF engine is designed and implemented) and is not a bug. Take a look at Chris Muir comments in these threads:
{: identifier of the thread = 1098626}
{: identifier of the thread = 1010102}Dimitar
-
value of selectOneChoice in the table gets reset to true visible table
I have a table with 2 columns. 1 column a inputtext A and another selectOneChoice B.
Also, I have a selectOneChoice more C above this table. On the "X" value in the drop-down list selection, the table above becomes true visible.
But at the same time, the selectOneChoice B reset to a value of zero instead of having the value extracted from DB.
A inputtext has no effect. It displays the value extracted from DB.
If we say that the table are refreshing causing to reset selectOneChoice B. It is seems to be wrong. Below this table, I have 2 button to add and remove rows from the table.
Add / delete, table gets refereshed but selectOneChoice B loses its value.
Before the page loads, set the bean attribute which is used to visible.
-
My application uses an indicator of demand (OS 7.0), but even though I can see that the value is correctly set, the account again on the icon does not update.
The initial value is set correctly by using this:
protected public static void setIndicator() {}
unreadCount int = PersistentStorage.getUnreadMessageCount ();
EncodedImage image = EncodedImage.getEncodedImageResource ("indicator.png");
ApplicationIcon icon = new ApplicationIcon (image);
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance ();
indicator = reg.register (true false, icon,);
indicator.setValue (unreadCount);
indicator.setIcon (icon);
indicator.setVisible(unreadCount>0);
}Here's the updated code:
Public Shared Sub updateIndicator (value absolute final int, boolean) {}
Indicator update
last indicator of ApplicationIndicator = ApplicationIndicatorRegistry.getInstance () .getApplicationIndicator ();
If (flag == null) {}
return;
}If (absolute)
indicator.setValue (value);
on the other
indicator.setValue (indicator.getValue () + value);
indicator.setVisible (indicator.getValue () > 0);
}The code is always called as planned and the value of the indicator can be collated and is correct, just next to the indicator value is not updated. I would try to call Invalidate() on the indicator, but such does not work.
A tip?
Thank you
Chris
I suspect this is a problem of the static context and suggests that you put the indicator in the runtimestore.
-
Update the UI in the loop?
int currentValue = 0;int maxValue = 100; GaugeField progress = new GaugeField("", 0, maxValue, 0, GaugeField.FIELD_LEFT);add(progress); while (currentValue < maxValue) { // do something cpu intensive currentValue++; progress.setValue(progress.getValue() + 1); // what do I do here to force my display to update? Currently my device is frozen until my loop finishes}
I googled and tried without success to what I assume is a simple answer. The code example above is not my real code, it's just something I typed quickly to my question. Help out me
OK I understand how to make it work. Here's what I did for someone else who can be the solution. I got my update of the gauge in the following block of code. Can I really change so it updates only every 10 iterations or so since the repaints slow down things a bit.
synchronized (UiApplication.getEventLock()) { _KMLProgress.setValue(_KMLProgress.getValue() + 1); UiApplication.getUiApplication().repaint(); }
-
Hi all
I have a datagrid in which I have to display the progress bar with the task completed in %.
for example, I have two fields in a source meter table and counter of the completion.
where source County in 100000 rows and 50000 lines have been inserted.
in another table and status are displayed in the table.
so I need to display in a progress bar that task of 50% has been completed.
Any suggestions or ideas.
Sample ex:
Hello
Here's something to play with:
public class ProgressInTableTest { private static final Random RANDOM = new Random(); private final class RunnableDummyProgressProducer implements Runnable { private final DefaultTableModel defaultTableModel; private final JProgressBar allProgress; private RunnableDummyProgressProducer( DefaultTableModel defaultTableModel, JProgressBar allProgress) { this.defaultTableModel = defaultTableModel; this.allProgress = allProgress; } @Override public void run() { for (int i = 0; i < progressEntries.size(); i++) { ProgressEntry progressEntry = progressEntries.get(i); while (100 > progressEntry.progress * 100 / progressEntry.fileSize) { progressEntry.progress += 10; defaultTableModel.fireTableCellUpdated(i, 2); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } progressEntry.progress = progressEntry.fileSize; SwingUtilities.invokeLater(new Runnable() { @Override public void run() { allProgress.setValue(allProgress.getValue() + 1); allProgress.setString(String.format("%s / %s", allProgress.getValue(), allProgress.getMaximum())); } }); defaultTableModel.fireTableCellUpdated(i, 2); } } } private final class DefaultTableCellRendererExample extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component rendererComponent = super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); JTextField newRenderer = new JTextField(); ProgressEntry progressEntry = progressEntries.get(row); switch (progressEntry.progress * 100 / progressEntry.fileSize) { case 0: newRenderer.setText("pending"); return newRenderer; case 100: newRenderer.setText("done"); return newRenderer; default: rendererComponent = new JProgressBar(0, progressEntry.fileSize); JProgressBar jProgressBar = (JProgressBar) rendererComponent; jProgressBar.setValue(progressEntry.progress); jProgressBar.setStringPainted(true); } return rendererComponent; } } private final class DefaultTableModelExample extends DefaultTableModel { private static final long serialVersionUID = 1L; private final String[] columnNames = { "file name", "file size", "progress" }; private DefaultTableModelExample(int rowCount, int columnCount) { super(rowCount, columnCount); } @Override public String getColumnName(int column) { return columnNames[column]; } @Override public Class> getColumnClass(int collumn) { switch (collumn) { case 1: return Integer.class; case 2: return ProgressEntry.class; default: return String.class; } } @Override public Object getValueAt(int row, int column) { switch (column) { case 0: return progressEntries.get(row).fileName; case 1: return progressEntries.get(row).fileSize; case 2: return progressEntries.get(row).progress; default: return super.getValueAt(row, column); } } } public class ProgressEntry { private final String fileName; private final int fileSize; private int progress = 0; public ProgressEntry(String fileName, int fileSize) { this.fileName = fileName; this.fileSize = fileSize; } } private final List
progressEntries = new ArrayList (); @Test public void test() { initializeSampleData(); JProgressBar allProgress = createFileCountProgress(); DefaultTableModel defaultTableModel = new DefaultTableModelExample( progressEntries.size(), 3); JTable table = createTable(defaultTableModel); startDummyProcess(allProgress, defaultTableModel); JPanel message = completeGUI(allProgress, table); JOptionPane.showMessageDialog(null, message, "ProgressTest", JOptionPane.PLAIN_MESSAGE); } private JPanel completeGUI(final JProgressBar allProgress, JTable table) { JPanel message = new JPanel(new BorderLayout()); message.add(new JScrollPane(table), BorderLayout.CENTER); message.add(allProgress, BorderLayout.SOUTH); return message; } private void startDummyProcess(final JProgressBar allProgress, final DefaultTableModel defaultTableModel) { new Thread(new RunnableDummyProgressProducer(defaultTableModel, allProgress), "ProgressTest").start(); } private JTable createTable(final DefaultTableModel defaultTableModel) { JTable table = new JTable(defaultTableModel); table.setDefaultRenderer(ProgressEntry.class, new DefaultTableCellRendererExample()); return table; } private JProgressBar createFileCountProgress() { final JProgressBar allProgress = new JProgressBar(0, progressEntries.size()); allProgress.setStringPainted(true); return allProgress; } private void initializeSampleData() { for (int i = 0; i < 20; i++) { progressEntries.add(new ProgressEntry(String.format("IMG_%03d.jpg", i), RANDOM.nextInt(1000))); } for (int i = 0; i < 3; i++) { progressEntries.get(i).progress = progressEntries.get(i).fileSize; } progressEntries.get(3).progress = 50; } } Good bye
DPT
-
Script client to get their hands on the table af page number
Hello
I use Jdev Studio Edition Version 12.1.2.0.0
In my jsf page, I have a table with scroll like page policy and the size of the field is 25. I wrote a script client side to select all rows in the table. I have a check boxes on each line od the table which is activated when the header checkbox is selected.
< af:column blockable = 'true '.
headerText = "#{bindings." EmployeesView1.hints.Selected.label}"id ="c5 ".
inlineStyle =' #{(row.selected)? {"" "" background-color: #ffaaaa ":" "}; ">"
< f: facet name = "header" >
< af:selectBooleanCheckbox shortDesc = "#{bindings." EmployeesView1.hints.Selected.tooltip}.
ID = "checkboxHeader.
Binding = "#{TableShuttleBean.selectAllCheckBoxA} '"
clientComponent = "true" >
< af:clientListener method = "selectRows" type = "click on" / >
"< name af:clientAttribute ="tableLocator"value =": t1 "/ >"
"< name af:clientAttribute ="checkboxLocator"value =": ot5 "/ >"
< / af:selectBooleanCheckbox >
< / f: facet >
< af:selectBooleanCheckbox value = "#{row.selected} '"
shortDesc = "#{bindings." EmployeesView1.hints.Selected.tooltip}.
ID = "ot5" autoSubmit = 'true '.
valueChangeListener = "#{TableShuttleBean.handleSelect} '"
Binding = "#{TableShuttleBean.CheckBox} '"
clientComponent = "true" / >
< / af:column >
function selectRows (event) {}
checkbox var = event.getSource ();
var checkboxLocator = checkbox.getProperty ("checkboxLocator");
var tableLocator = checkbox.getProperty ("tableLocator");
var table = checkbox.findComponent (tableLocator);
var nbRows = parseInt (table.getRows ());
var tableAbsLocator = table.getAbsoluteLocator ();
While (nbRows)-{ }
var rowCheckbox = AdfPage.PAGE.findComponentByAbsoluteLocator (tableAbsLocator + "[" + nbRows + "]" + checkboxLocator);
If (checkbox.getValue ()! = rowCheckbox.getValue ()) {}
rowCheckbox.setValue (checkbox.getValue ());
}
}
}
}
nbRows returns to 25 and using code above, I can select all 25 lines to the page under the table.
But when the user navigates to other pages in the table of the af, then returns to the page where he made the selection, these selections are lost. Is there a way hat I can handle the number of table af in javascript page.
I took help of http://technology.amis.nl/2013/05/07/adf-client-side-architecture-select-all/#related-postshttp://technology.amis.nl/2013/05/07/adf-client-side-architecture-select-all/#related-posts
but this the problem of paging.
I solved the problem by getting the component HTML Id of the text field that displays the page number of table.
-
copy the input values in the text the text of input 2 input 1 using the value change listener
Hello
I have two text entry:
input 1 & 2 text text entry.
I need to copy in the text of entry 1 input values to enter text 2.
How to apply this using value change listener?
I did the following steps:
(1) I chose 1 text entry and chose listener Value Change-> edit.
Type a new name for bean & class.
Should what the name of the method I add?
Any help please?
Hello
Just follow the steps below.
1 create a jspx page and drag drop two intput text on the page.
2 linking these two text of entry to bean managed on the basis and the scope of bean on bean with property name inputVal1, inputVal2 and backing
3. Select the input text 1, go to valueChangeListener property and use the existing bean and give some name of method and the copy of the code in the method below
inputVal2.setValue (inputVal1.getValue () m:System.NET.SocketAddress.ToString ());
4. set the autoSubmit = true for the 1st input text. Set partialTrigger = it1 (it1 is id of the 1st input text).
Now run the page
Thank you
Nitesh
-
How the Bean object have been marked with JSTL?
Hello
Can we expose me how bean object have been marked to JSTL?
Thanks and greetings
VijaySay that you value = "#{x.value}". " If it is in a context where he needs to read the value, she search a managed bean called 'x', looking for the get accessor for the bean property 'value', i.e. of GetValue and calls it. If in a context where he needs to set the value, it seems for the setter, i.e. setValue() and call it. Everything through reflection.
-
MapTrigger behavior with declarative registration
Hello
Please help me to better understand the behavior of MapTrigger. I try to use a MapTrigger that inserts changes cache 'Bar' when the 'Foo' Cache changes. I register my BarCacheLoaderTrigger in Foo cache declaratively as follows
Here are my questions:<distributed-scheme> <scheme-name>Foo-distributed</scheme-name> <service-name>FooDistributed</service-name> <backing-map-scheme> <local-scheme> <scheme-ref>default-binary-backing-map</scheme-ref> </local-scheme> </backing-map-scheme> <listener> <class-scheme> <class-factory-name>com.some.package.BarCacheLoaderTrigger</class-factory-name> <method-name>createTriggerListener</method-name> </class-scheme> </listener> <autostart>true</autostart> </distributed-scheme>
-Is insitu trigger executed each enabled storage node where the partitions of Foo? It turns on the side server only, or is it also get instantiated on each client that gets a reference to the memory cache?
-It seems that the instance of MapTrigger is created when I opened a disabled customer console storage to query the cache of Foo. It should not only get instantiated on active storage nodes?
-When my CacheLoader program runs, filling hundreds of objects of Foo, I observe the severe pretension to query Foo cache (size query takes 30 seconds to get back). This happens when the trigger was not present. Is this normal?
-What is the implication of getting a NamedCache (for Bar cache) reference with each unique performance of map of relaxation (in the process method)? I can't get the reference once to the instance level and use it for the whole of the cycle because he complained about an exception not serializable the trigger. What is a good model for what I'm doing?
Please notify
Thank you
SairamSKR wrote:
Thanks for the reply, RobertYes, the two caches are configured with different cache services. The remote control and the application of filter are dear to the processing stage. I like the idea of using KeyAffinity + BackingMapContext for the treatment of trigger and my keys are associable. I guess it would only work if the caches are managed by the cache, service unlike access via NamedCache interface of in a MapTrigger, right?
Yes, they would need to be in the same cache key affinity service.
Once you have affinity, so you can transfer affine them entered in the cache of customer research easily, and you can easily access an index on the getCustomerId by the BackingMapContext of the client cache search to remove existing entries:
BackingMapContext customerSearchCacheBackingMapContext = ((BinaryEntry)entry).getBackingMapContext().getManagerContext().getBackingMapContext(CacheName.CUSTOMER_SEARCH.getNameString()); MapIndex customerIdIndex = (MapIndex)customerSearchCacheBackingMapContext.getIndexMap().get(new ReflectionExtractor("getCustomerId")); Set
customerSearchInternalKeys = (Set) customerIdIndex.getIndexContents().get(custId) for (Binary internalKey : customerSearchInternalKeys) { InvocableMap.Entry customerSearchEntry = customerSearchCacheBackingMapContext.getBackingMapEntry(internalKey); if (customerSearchEntry.isPresent()) { // this should always be true in your case, but just in case entry.remove(); } } You can use code similar to the following to insert new objects of customer search:
Converter keyToInternalConverter = customerSearchCacheBackingMapContext.getManagerContext().getKeyToInternalConverter(); Map newobjects = addCustomerSearchObjects(customer); for (Map.Entry newEntry : (Set
) newobjects.entrySet()) { InvocableMap.Entry customerSearchEntry = customerSearchCacheBackingMapContext.getBackingMapEntry(keyToInternalConverter.convert(newEntry.getKey())); customerSearchEntry.setValue(newEntry.getValue()); } Don't you see any problem running this as part of a logic of MapTrigger, or advise you to use an EntryProcessor for this?
This MapTrigger and EntryProcessor would probably be the same thing (you'd have to deserialize the value of the entry anyway).
Now, there may be some incompletely implemented the feature in consistency that can prevent the insertion of new entries of triggers (I am not sure, but I recall there were a few problems for this scenario with the interceptors again), but this approach can be extended to a wrapper EntryProcessor instead of a MapTrigger that would probably work. If this seems to work, so he does. If it is not the case, then you'd get exceptions or NULL values for the entries in getBackingMapEntry but as I said, I do not remember the precise scenario for these issues.
This doesn't have to be synchronous with the customer operation put and I am able to run asynchronously if the performance is affected by this.
According to me, other operations will be not too expensive (even if random has noticeable cost).
For the run asynchronously, please look at my previous post to get suggestions (using another thread or a new order of control inserted directly in the same partition model). You should test your system to see if it is necessary to make asynchronous.
Best regards
Robert
-
Copy contents of af: inputText to af:outputText webcenter underway
Hello!
I am completely new to oracle webcenter portal and oracle ADF.
I want to copy the content entered AF: to af:outText inputText component when I press on enter key. I have helped my PPR and put the autoSubmit and partialTrigger at the entrances and exits respectively.
I don't know how to copy the value entry and exit. What should I use Expression EL, if yes then how to create a...?
Concerning
Shoaib
Published by: Shoaib Mujawar on May 27, 2012 21:30Use as the bean:
public class YourBean { private String yourValue; public void setYourValue(String value){this.yourValue = value;) public String getYourValue(){return yourValue;} }
Use this solution in your JSF:
This should work and is a bit easier than your code :)
If you want to use your code, you must set the binding attribute:
and the bean:
private RichInputText inputText; private RichInputText anotherText; public void SetInput(ValueChangeEvent valueChangeEvent) { anotherText.setValue(inputText.getValue()); }
Published by: Yannick Ongena on May 28, 2012 11:25
-
Strange read after work entry processor operation of
Hello.
We use the listener of combination cache - processor of entry to certain actions when the data comes from coherence. We use Version consistency Oracle 3.5.3/465.
Just after the entry processor has defined the new value for the entry, the new 'get' operation is called for the cache and jdbc hit is for this key.
Here's the entry processor:
Very interesting, that if I use entry.setValue (value) without second parameter - I get the db hit right on the setValue method. According to the docs, setValue() with a parameter returns the previous value and its logic, that the cache hit (and therefore the PB hit) is right on the tray. But I use the overloaded version Sub setValue (java.lang.Object evaluating, boolean fSynthetic), which is supposed to be light and should not seek a previous version of the object. But this is done in any case! Not on SetValue himself, but just after the process() method called.public Object process(Entry entry) { if (!entry.isPresent()) { // No entities exist for this CoreMatchingString - creating new Matching unit MatchingUnit newUnit = new MatchingUnit(newTrade); entry.setValue(newUnit, true); return null; } ((MatchingUnit)entry.getValue()).processMatching(newTrade); return null; }
It's strange, that consistency is trying to retrieve the previous value in the present case, that there was no! The cache.invoke (matchingStr, CCPEntryProcessor (ccp)) new is called on the record not exist and it is created right on the invocation. Maybe it's the bug or the place for optimization.
Thank youBITEC wrote:
Thank you, Robert, for this detailed response.Still not clear to me why the synthetic inserts are questionable. There are many cases, when the client simply updates/inserts recording (using setValue()) and don't don't don't need to receive the previous value. If he needs to, he will launch the method:
Hi Anton,.
It is questionable because the purpose of the indicator fSynthetic is NOT that you can optimize a store operation hidden far. Synthetic event means that it is not a real change in the whole of data triggered by the user, it's something that consistency has made in terms of support / cover for its own reasons and decisions to be able to provide high availability for data, and it only changes of subset of this particular node of data consistency but has no meaning associated with the full data set that actually exists. These reasons are movement partition and expulsion of cache (or possibly other reasons why consistency would like to change the content of the carrier sheet without telling the user that nothing has changed).
If you set the indicator, you attempt a change of data of masquerade as an event whose consistency has decided to trigger. It is questionable. Also, events map synthetic support may not always lead to the expedition to cache events (for partition rebalance they certainly not). This optimization can also be extended to cover synthetic events.
java.lang.Object setValue(java.lang.Object oValue)
and receive the previous value. If it does not, it calls:
void setValue(java.lang.Object oValue, boolean fSynthetic)
and does not receive the previous value as method is marked as void. Thus, he cannot get the previous value in any case using this API, with the exception of the call live db manual.
Yes, because the consistency is not interested in the old value in the case of a synthetic event. Synthesis methods exist so that some entry can be changed to coherence (usually by coherence itself) so that it indicates a synthetic event so that listeners are unaware.
Some valid uses for this type of feature to setValue called by user code could be compaction value set caching and replacing the value that stores the support plan by the representation in compact, which does not mean a change in the sense of the actual cached value, only the changes to the representation. Of course if the setValue method (2) is not actually honoring the synthetic indicator, then such a feature will still commit all costs of a call normal setValue (1).
But the previous value is in any case read by coherence itself, just after process() and the customer anyway is not get it!
But all the headphones on the cache may have because of the cache of the semantic reasons.
In this case, I consider that the bug, the cause of the client, which uses this API does not cache hit to take place (no return value for the setValue() method not overloaded), but it takes and leads to additional problems, as a result of reading through mechanizm.
I'd not considered to be a bug, it's probably the case documenting a possible optimization too early, when it ultimately does not get put in place. I certainly wouldn't try to abuse it to set a value without triggering a db extraction, as again, the intention of the synthetic indicator is related not only to the cache loader functionality, but also to events and marking a change indicates a change of actual data or a data consistency management action.
Now I understand why consistency is unclear, if this is inserted or updated, thanks for details value.
Anton.
* Edition: I thought this problem from the point of the oracle user, but perhaps this additional success is necessary for event producers, who must take the events that contain old/new values. In this case, this seems to be the correct behavior... Seems I need some another workaround to avoid the blow of db. The best solution is the empty load() for dumps...
You can try to find a solution, but it's a ugly Pandora's box, because of the scenario when multiple threads try to load the same entry, and some of them try to load it with the reason.
You can try putting a thread local data to indicate that you want really load that special touch. The problem is that depending on the configuration and conditions of race as your cache loader may not be called to clean up local thread as another thread can only be invoked now, and in this case its return value will be returned to all other threads, too, then you can end up with a polluted thread.
Best regards
Robert
Published by: robvarga on October 15, 2010 16:25
-
Cannot recognize the symbol Variant property
Hi guys, I tried to saveValue and getValue function to work on my app. But I'm a symbol of warning 'unknown '.
"AffichageContenu" ", which makes WARNING function is not working properly." What makes this warning occurs and how to solve?
Here is my code:
hand. QML
Tab { title: "Income" imageSource: "asset:///images/income_icon.png" Page { id: incomePage property variant contentView function clear(){ income_name.text=""; income_value.text=""; } function setInfo() { editIncomeName.text=income.getValueFor("income_Name",""); editIncomeValue.text=income.getValueFor("income_Value",""); } Container { background: income_background.imagePaint attachedObjects: [ ImagePaintDefinition { id: income_background imageSource: "asset:///images/background.amd" repeatPattern: RepeatPattern.XY } ] id:imagecontainer ImageView { maxHeight: 180 id:background accessibility.name: "background" imageSource: "asset:///images/income_page.png" } layout: StackLayout { } horizontalAlignment: HorizontalAlignment.Fill verticalAlignment: VerticalAlignment.Fill ScrollView { id:scrollincome accessibility.name: "scrollincome" scrollViewProperties { scrollMode: ScrollMode.Vertical } horizontalAlignment: HorizontalAlignment.Center Container { id:mainincome Container { topPadding: 20 id:inputborder layout: DockLayout { } ImageView { maxHeight: 350 maxWidth: 750 id:incomebox accessibility.name: "incomebox" imageSource: "asset:///images/border.png" horizontalAlignment: HorizontalAlignment.Fill verticalAlignment: VerticalAlignment.Fill } Container { id: income_inputwrapper layout: StackLayout { } horizontalAlignment: HorizontalAlignment.Center Container { topPadding: 30 id: incomefield TextField { maxWidth: 500 id: income_name accessibility.name: "income_name" hintText: "Income Name" }//incomecategory TextField { maxWidth: 500 id: income_value accessibility.name: "income_value" hintText: "Income Value" inputMode: inputMode.NumbersAndPunctuation } }//incomefield Container { maxWidth: 350 maxHeight: 110 topPadding: 30 id:incomebutton layout: StackLayout { orientation: LayoutOrientation.LeftToRight } horizontalAlignment: HorizontalAlignment.Center ImageButton { id: addincome accessibility.name: "income_button" defaultImageSource: "asset:///images/add_button.png" layoutProperties: StackLayoutProperties { spaceQuota: 1 } onClicked: { income.addNewRecord(income_name.text,income_value.text); income_name.text=""; income_value.text=""; } } ImageButton { id: resetincome accessibility.name: "reset_income" defaultImageSource: "asset:///images/reset_button.png" layoutProperties: StackLayoutProperties { spaceQuota: 1 } onClicked: { income.resetIncome(); } } }//incomebutton }//inputwrapper }//inputborder Container { id: income_field layout: StackLayout { } horizontalAlignment: HorizontalAlignment.Center verticalAlignment: VerticalAlignment.Bottom Container { topPadding: 30 id: income_result horizontalAlignment: HorizontalAlignment.Center Label { id: income_text accessibility.name: "incometext" text: "Income Total :" textFit{ minFontSizeValue: 2 } }//incometotaltext Label { id: income_total accessibility.name: "incomelabel" text: "$" textFit{ minFontSizeValue: 5 } }//incometotallabel }//incomeResult Container { id: incomeListView ListView { translationY:0 translationX:0 accessibility.name: "income_List" objectName: "incomeList" id: incomeList preferredHeight:850 dataModel: incomeModel listItemComponents: [ ListItemComponent { type: "item" StandardListItem { imageSpaceReserved: false title: ListItemData.income_Name status: ListItemData.income_Value } } ] onTriggered: { incomeList.clearSelection(); select(indexPath); income.findIndexPath(indexPath); income.saveValueFor("title",contentView.income_name); income.saveValueFor("classes",contentView.income_value); incomePage.setInfo(); editIncome.open(); } onSelectionChanged: { if (selected) { var chosenItem = dataModel.data(indexPath); contentView = chosenItem; } } layoutProperties: StackLayoutProperties { spaceQuota: -1.0 } }//ListView }//incomeListView }//incomefield }//mainincome }//scrollview }//imagecontainer }//incomepage attachedObjects: [ Sheet { id:editIncome content : Page { titleBar: TitleBar { id:editIncomeTitle title: "Edit Income" dismissAction: ActionItem { title: "Back" onTriggered: { editIncome.close(); incomePage.clear(); } } acceptAction: ActionItem { title: "Submit" onTriggered: { if (editIncomeName.text.length>0 && editIncomeValue.text.length>0) { income.addNewRecord(income_name.text,income_value.text); editIncome.close(); incomePage.clear(); } else { editIncomeName.hintText="Enter Income Name"; editIncomeValue.hintText="Enter Income Value"; } } } } Container { topPadding: 20 id:editIncomeBorder layout: DockLayout { } ImageView { maxHeight: 350 maxWidth: 750 id:editIncomeBox accessibility.name: "incomebox" imageSource: "asset:///images/border.png" horizontalAlignment: HorizontalAlignment.Fill verticalAlignment: VerticalAlignment.Fill } Container { id: incomeReview layout: StackLayout { } horizontalAlignment: HorizontalAlignment.Center Container { topPadding: 30 id: incomereviewField TextField { maxWidth: 500 id: editIncomeName accessibility.name: "income_name" text: income.getValueFor("income_Name","") }//incomecategory TextField { maxWidth: 500 id: editIncomeValue accessibility.name: "income_value" text: income.getValueFor("income_Value","") } }//incomefield }//incomeBox }//incomeBorder }//reviewPage }//reviewSheet ] }//incometab
Any help would be appreciated. Thank you.
Problem solved. I decided not to use the variant of the property, but merging chosenItem Manager in onTriggered reference signal for save value and get value of work.
onTriggered: { incomeList.clearSelection(); select(indexPath); sql.findIndexPath(indexPath); var chosenItem = dataModel.data(indexPath); chosenItem.income_name; chosenItem.income_value; sql.saveValueFor("income_Name",chosenItem.income_Name); sql.saveValueFor("income_Value",chosenItem.income_Value); incomePage.setInfo(); editIncome.open(); }
Thank you for your effort in providing possible solutions to this problem.
Concerning
-
exhibition of C++ to QML
Hey guys,.
I am a C++ class for my application QML. I'm just some simple tests from now based on the examples here: https://developer.blackberry.com/cascades/documentation/dev/integrating_cpp_qml/index.html
I have a simple class defined using the QOBJECT and QPROPERTY (no Q_INVOKABLE methods).
I'm not clear on one thing. In the example, the class is defined as:
#ifndef MYCPPCLASS_H_ #define MYCPPCLASS_H_ #include
#include class MyCppClass : public QObject { Q_OBJECT Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) public: MyCppClass(); virtual ~MyCppClass(); Q_INVOKABLE void reset(); int value(); void setValue(int i); signals: void valueChanged(int); private: int m_iValue; }; #endif in the Q_PROPERTY line, there is a variable, a method to 'read', a 'write' method and a signal to emit.
the variable is not used anywhere.
the class definition looks like this:
#include "MyCppClass.h" MyCppClass::MyCppClass() { m_iValue = 0; } MyCppClass::~MyCppClass() { } int MyCppClass::value() { return m_iValue; } void MyCppClass::setValue(int i) { m_iValue = i; emit valueChanged(m_iValue); } void MyCppClass::reset() { m_iValue = 0; emit valueChanged(m_iValue); }
Here is my test class.
#ifndef SIMPLECLASS_HPP_ #define SIMPLECLASS_HPP_ #include
#include class SimpleClass : public QObject{ Q_OBJECT Q_PROPERTY(int iInt READ iGetInt WRITE iSetInt NOTIFY intChanged) public: SimpleClass(); virtual ~SimpleClass(); int iGetInt(); void iSetInt(int i); signals: void intChanged(int); private: // private variables int myInt; }; #endif /* SIMPLECLASS_HPP_ */ I * think * (int) iSetInt works, but the iGetInt() is not.
I am doing in my QML:
Button { id: myButton text: "action" onClicked: { if (myLabel.text == "you pushed it!") { myLabel.text = "you pushed it again!"; } else { myLabel.text = "you pushed it!"; } mySimpleClass.iSetInt(44); myOtherLabel.text = "onClicked: " + mySimpleClass.iGetInt(); } // onClicked } // Button
any ideas what I am doing wrong?
In example there, the value is the parameter which must be accessible from QML. setValue() and Value() are function QML call whenver a read or write occurs. I'm not clear what of wrong with your cde, but try to access the value directly instead of using the functions - or in your case you iInt.
Maybe you are looking for
-
I accidentally deleted all in iBooks.
I accidentally deleted all in iBooks. How can I get back those files? Almost all the files came from me not the itune store.
-
NB100 dead Fn key - how to access applets?
My son reported NB100 of family from a trip to India with keyboard damage (water damage, apparently). Most of the dead (bit) keys, I can re - assign or work around, but the blue "Fn" key (below, second row left between Ctrl and the key Win) is diffic
-
Portege R100 Bluetooth Stack needs license number
I had to have a new hard drive installed on my laptop recently and since that time, I downloaded the latest driver for the Bluetooth stack from Toshiba web site and used with my USB bluetooth dongle. It worked OK for a while but it must note it on th
-
Can satellite L300-11 - I replace the CPU for the Core 2 Duo T7100?
I have laptop Toshiba L300-11F. It integrates CPU INTEL CELERON CPU 550 @ 2 GHz, socket 479P. Can I replace this processor on the socketP478 of core2duo T7100 and know if it will work on 800 MGz?
-
Vista Business and Quickbooks Pro 2007 compatibility
I have a MAC that has installed windows programs can be used and I want to be sure that the QB 2007 Pro is vista compatible. The man in the store said, but rather get another YES someone here if not more! :) Thank you!