OIM 11gR2 Add combo box UDF on Create User Form
Hi.
We have created a new UDF on user form. It is a lookup field and has the following lookup associated: "Lookup.Users.Continente"
"Lookup.Users.Continente" has two values, both of them checked as Enabled.
From the form designer all the values are displayed when selecting one default value so it is reading correctly from the lookup.
We published the sandbox after this.
Then we created a new sandbox and tried to add that field to the Create User Page. We went to "Create User Page", customize it and add content from "Data Component - Catalog" -> "userVO" -> Select the UDF, clicked on "Add" and selected "ADF Select One Choice".
A new combobox is added but no values are shown. We have plublished the sandbox, restarted OIM, purged cache, etc... but it still shows an empty combo box. We have also tried adding it as "ADF Input List of values" but it does not add the field to the create user page.
Any ideas of what are we doing wrong?
The idea is very simple, just create a field with the same behaviour as, for example, "User Type" field. A combobox that displays the enabled values from a lookup...
We have also tried creating the UDF cheking the searchable option, searchable picklist and all the possible combinations.
Thanks in advance!!
oim version is oim 11gR2 with BP4
Similar Messages
-
Want to add a prepopulated User defined field in create user form
Hi,
I have an entity adapter which will perform a pre-insert check on the user group of the user logged in to the oim.
If the logged in user belongs to a group say "IT ADMIN", another validation check will be imposed on the create user action performed by him.
If not from "IT ADMIN" group then create user action will be handled normally.
Now the catch is, how would I determine the group name of the user logged in from the adapter code I have written?
I decided to keep an User defined field "Created by" in the create user form which will be non-editable and auto-prepopulated with the group name of the logged in user. This way I will be able to map the variable field from the User definition drop down list while mapping the adapter variables.
May you please guide me how I can achieve this?
Would highly appreciate suggestion/inputs.Thanks for all your replies!
However I am still in dark.
I tried to retrieve the groupname using tcUSerOperationsIntf. But iit tries to retrieve the group name of the user getting created.
Please note, the group name I want is not of the user yet to get created, but that of the user creating it i.e., the logged in user.
My requirement is to have this created_by field in the create user form already prepopulated with the group name of the logged in user.
So that I can put a check based on this field value in the netity adapter.
If the group is IT ADMIN then proceed with the validation.
Else no validation required.
In short, I want to know,how can I auto-prepopulate a UDF in Create USer form? -
Restrict list of Organizations on Create User form
Running OIM 11.1.1.5.0.
We have a couple of companies using our OIM for delegated administration. In the Create User form, if the user searches for an organization they see a list of all of our organizations not just the ones that they can place a user in.
If they place a user in an organization that is not in their auth policy they receive an error:
"You are either not authorized to create user in XXX organization or not authorized to create user in XXX organization without specifying a value for manager."
Is there any way to restrict the list of organizations in the search to the list in their auth policy?I have have this:
Company A
-- Department A1 (although these are actually set as Organization type Company in OIM)
-- Department A2
Company B
-- Department B1
User Management Auth Policy for AdminA:
-- Data Constraint - Users who are members of Department A1, A2
But when AdminA uses Create User he gets a list of all Company and Department names in the Organization search popup.
Do I take it from your reply that this is supposed to work and it's something that I have setup incorrectly then?
Edited by: Ewan on May 4, 2012 7:37 AM -
Add combo box into table pagination
I want to add combo box into JavaFX table with pagination. Something like that:
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;
public class MainApp extends Application
final ObservableList<Person> data = FXCollections.observableArrayList(
new Person("1", "Joe", "Pesci"),
new Person("2", "Audrey", "Hepburn"),
new Person("3", "Gregory", "Peck")
private Pagination pagination;
public static void main(String[] args) throws Exception
launch(args);
public int itemsPerPage()
return 1;
public int rowsPerPage()
return 5;
public VBox createPage(int pageIndex)
int lastIndex = 0;
int displace = data.size() % rowsPerPage();
if (displace > 0)
lastIndex = data.size() / rowsPerPage();
else
lastIndex = data.size() / rowsPerPage() - 1;
VBox box = new VBox(5);
int page = pageIndex * itemsPerPage();
for (int i = page; i < page + itemsPerPage(); i++)
TableView<Person> table = new TableView<>();
TableColumn numCol = new TableColumn("ID");
numCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("num"));
numCol.setMinWidth(20);
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
firstNameCol.setMinWidth(160);
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("lastName"));
lastNameCol.setMinWidth(160);
table.getColumns().addAll(numCol, firstNameCol, lastNameCol);
if (lastIndex == pageIndex)
table.setItems(FXCollections.observableArrayList(data.subList(pageIndex * rowsPerPage(), pageIndex * rowsPerPage() + displace)));
else
table.setItems(FXCollections.observableArrayList(data.subList(pageIndex * rowsPerPage(), pageIndex * rowsPerPage() + rowsPerPage())));
box.getChildren().add(table);
return box;
@Override
public void start(final Stage stage) throws Exception
pagination = new Pagination((data.size() / rowsPerPage() + 1), 0);
// pagination = new Pagination(20 , 0);
//pagination.setStyle("-fx-border-color:red;");
pagination.setPageFactory(new Callback<Integer, Node>()
@Override
public Node call(Integer pageIndex)
if (pageIndex > data.size() / rowsPerPage() + 1)
return null;
else
return createPage(pageIndex);
public static class Person
private final SimpleStringProperty num;
private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private Person(String id, String fName, String lName)
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
this.num = new SimpleStringProperty(id);
public String getFirstName()
return firstName.get();
public void setFirstName(String fName)
firstName.set(fName);
public String getLastName()
return lastName.get();
public void setLastName(String fName)
lastName.set(fName);
public String getNum()
return num.get();
public void setNum(String id)
num.set(id);
I suppose that this can be done with StackPane but I need some other more universal way to do this because I want to expand the table size. I need to place there the combo box always in a fix position.
Ref http://stackoverflow.com/questions/21147261/add-combo-box-into-table-paginationHi. You can do it using an AnchorPane:
AnchorPane.setBottomAnchor(comboBox, 40.0);
AnchorPane.setLeftAnchor(comboBox, 12.0);
The complete example :
import java.util.List;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ListChangeListener.Change;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.Node;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;
public class TablePager extends Application {
final ObservableList<Person> data = FXCollections.observableArrayList(
new Person("1", "Joe", "Pesci"),
new Person("2", "Audrey", "Hepburn"),
new Person("3", "Gregory", "Peck"),
new Person("4", "Cary", "Grant"),
new Person("5", "De", "Niro"),
new Person("6", "Katharine", "Hepburn"),
new Person("7", "Jack", "Nicholson"),
new Person("8", "Morgan", "Freeman"),
new Person("9", "Elizabeth", "Taylor"),
new Person("10", "Marcello", "Mastroianni"),
new Person("11", "Innokenty", "Smoktunovsky"),
new Person("12", "Sophia", "Loren"),
new Person("13", "Alexander", "Kalyagin"),
new Person("14", "Peter", "OToole"),
new Person("15", "Gene", "Wilder"),
new Person("16", "Evgeny", "Evstegneev"),
new Person("17", "Michael", "Caine"),
new Person("18", "Jean-Paul", "Belmondo"),
new Person("19", " Julia", "Roberts"),
new Person("20", "James", "Stewart"),
new Person("21", "Sandra", "Bullock"),
new Person("22", "Paul", "Newman"),
new Person("23", "Oleg", "Tabakov"),
new Person("24", "Mary", "Steenburgen"),
new Person("25", "Jackie", "Chan"),
new Person("26", "Rodney", "Dangerfield"),
new Person("27", "Betty", "White"),
new Person("28", "Eddie", "Murphy"),
new Person("29", "Amitabh", "Bachchan"),
new Person("30", "Nicole", "Kidman"),
new Person("31", "Adriano", "Celentano"),
new Person("32", "Rhonda", " Fleming's"),
new Person("32", "Humphrey", "Bogart"));
private Pagination pagination;
public static void main(String[] args) throws Exception {
launch(args);
public int itemsPerPage() {
return 1;
public int rowsPerPage() {
return 5;
public VBox createPage(int pageIndex) {
int lastIndex = 0;
int displace = data.size() % rowsPerPage();
if (displace > 0) {
lastIndex = data.size() / rowsPerPage();
} else {
lastIndex = data.size() / rowsPerPage() - 1;
VBox box = new VBox();
int page = pageIndex * itemsPerPage();
for (int i = page; i < page + itemsPerPage(); i++) {
TableView<Person> table = new TableView<Person>();
TableColumn numCol = new TableColumn("ID");
numCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("num"));
numCol.setMinWidth(20);
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
firstNameCol.setMinWidth(160);
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("lastName"));
lastNameCol.setMinWidth(160);
table.getColumns().addAll(numCol, firstNameCol, lastNameCol);
if (lastIndex == pageIndex) {
table.setItems(FXCollections.observableArrayList(data.subList(pageIndex * rowsPerPage(), pageIndex * rowsPerPage() + displace)));
} else {
table.setItems(FXCollections.observableArrayList(data.subList(pageIndex * rowsPerPage(), pageIndex * rowsPerPage() + rowsPerPage())));
box.getChildren().addAll(table);
return box;
@Override
public void start(final Stage stage) throws Exception {
ObservableList<String> options =
FXCollections.observableArrayList(
"Opt1",
"Opt2",
"Opt3");
final ComboBox comboBox = new ComboBox(options);
pagination = new Pagination((data.size() / rowsPerPage() + 1), 0);
// pagination = new Pagination(20 , 0);
pagination.setStyle("-fx-border-color:red;");
pagination.setPageFactory(new Callback<Integer, Node>() {
@Override
public Node call(Integer pageIndex) {
if (pageIndex > data.size() / rowsPerPage() + 1) {
return null;
} else {
return createPage(pageIndex);
AnchorPane anchor = new AnchorPane();
AnchorPane.setTopAnchor(pagination, 10.0);
AnchorPane.setRightAnchor(pagination, 10.0);
AnchorPane.setBottomAnchor(pagination, 10.0);
AnchorPane.setLeftAnchor(pagination, 10.0);
Scene scene = new Scene(anchor, 400, 250);
AnchorPane.setBottomAnchor(comboBox, 40.0);
AnchorPane.setLeftAnchor(comboBox, 12.0);
anchor.getChildren().addAll(pagination, comboBox);
stage.setScene(scene);
stage.setTitle("Table pager");
stage.show();
public static class Person {
private final SimpleStringProperty num;
private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private Person(String id, String fName, String lName) {
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
this.num = new SimpleStringProperty(id);
public String getFirstName() {
return firstName.get();
public void setFirstName(String fName) {
firstName.set(fName);
public String getLastName() {
return lastName.get();
public void setLastName(String fName) {
lastName.set(fName);
public String getNum() {
return num.get();
public void setNum(String id) {
num.set(id); -
OIM 11gR2 : Deletion of Custom UDFs
Hello Experts,
I want to delete some custom UDFs from my User Form.
1. From the front end, i am able to do the same by exporting the sandbox and then deleting the UDFs from the user xml files and then again importing the sandbox.
*2. How may i delete the UDFs from the backend. Is there some utility provided by OIM 11gR2 for the same ? Kindly help *currently there is no such utility available in r2 which will delete UDF from backend.
You have to do the workaround. what you have done is right but something more to do if you have attached udf on user form.
1. export user.xml(metadata) using deployment manager
2. export sandbox
3. remove entries from user.xml
4. goto sandbox exported files and locate UserVo.xml,UserEo.xml,UserVo.xml.xml, UserEO.xml.xml...etc and remove entries from these file for the udf attribute and save it.
5. import user.xml using deployment manager
6. import sandbox and activate same
above steps will do your job. -
Add user validation in create user form during Configure User Object Classe
Hi friends,
I like to add a user validation code (javaScript or PL/SQL) into create user form during Configure User Object Classes.
Is any way to pick user information and role assignment for validation in Portal side?
or pre event in OID provisioning befor loading LDAP?
We like to make a rols assignment validation. But portal does not have this function.
TOM, Any suggestion?
Thanks!!after study, portal form --LOVGroupSearch take a role search and display user name for select role.
Who know we are can find system object LOVGroupSearch in portal or OID?
the source SCR as /oiddas/ui/oracle/ldap/das/search/LOVGroupSearch?title=Role%3Fredirect=/oiddas/ui/oracle/ldap/das/search/LOVGroupSearch%3Ftitle=Role
When we search a role and added it. selected role appears in form Search and Select:.
When click role name in Search and Select form. system will display Group Members and group owner.
Who can find behind codes for this form or samilar pl/sql codes?
Thanks!! -
Gaps appear in IE 6 browser window for hidden fields in Create User form
Hi,
I need an urgent input on this one.
I hid an OIM default attribute for users in the 'Create User' form by modifying clear_all_fields.js
The field is hidden from the 'Create User' page fine!
But if I open the page from Internet Explorer 6 it shows a gap in the place of the hidden field.
For Mozilla 3.0.5 the gaps are not appearing.
I tried removing these gaps by deleting the tags and the field in the clear_all_fields.js
or, by reducing the dimension of the spacer.gif in GenerateCreateUserForm.jsp.
But it reflected no change in the form look n feel.
The requirement is to hide the fields and not remove them.
Any suggestion as to what may be the way out?Thanks for the update Leonard. This would be an extremely useful plugin. I've been looking for it on http://labs.adobe.com/technologies/ under the plug-ins tab but have been unable to find it. It wasn't even there in the Pre-Release Programs. Is it located somewhere else or with a different name? Please let me know.
Meanwhile, I've been trying to write my own VB script to get the button clicked. Here's what I've come up till now-
FindText
HiliteList.Add->CreateWordHilite->SetTextSelect->GetBoundingRect->PointToDevice
The last function seems to be deprecated. Also there's nothing to connect the text highlighted by findtext with HiLiteList.Add. I guess
I may have to use the JSO word search method.
Any advice, as always, would be much appreciated. -
How to avoid special charecters in create user form
Hi all,
I am new to Sun IDM.Please u people have to help me in giving the solution.
Actually,in create user form ,we have first name and last name text fields.These two fields accept any special charecters.I want these fields to accept only alphabets.Do i need to create new rule for it?Please tell me the steps to be done to allow only alphabetic charecters in this fields.Thanks in advance,
regards,
sureshHi,
I should thank for the quick response u have done.But,still my problem was not solved.I did wat u hav said in the last reply...Now iam getting "1" in that create user form.I have send the XML code of the "isAlpha" and "Firstname"..Please check whether i have done any mistake..waiting for ur reply.
<Rule name='isAlpha'>
<Description>Tests to see if testStr is comprised of only alpha characters.</Description>
<RuleArgument name='testStr' value='testStr'/>
<block>
<defvar name='testList'>
<appendAll>
<rule name='Alpha Numeric Rules:AlphaCapital'/>
<rule name='Alpha Numeric Rules:AlphaLower'/>
</appendAll>
</defvar>
<containsAll>
<ref>testList</ref>
<rule name='Alpha Numeric Rules:stringToChars'>
<argument name='testStr' value='$(testStr)'/>
</rule>
</containsAll>
</block>
</Rule>
<Field name='global.firstname'>
<Display class='Text'>
<Property name='title' value='_FM_FIRSTNAME'/>
<Property name='size' value='32'/>
<Property name='maxLength' value='128'/>
</Display>
<Validation>
<rule name='Alpha Numeric Rules:isAlpha'>
<argument name='global.firstname'/>
</rule>
</Validation>
</Field> -
Mandatory Attributes in Create User Form
Hi All
i want to make the mandatory fields in create user form (ie Organization name) as optional.
For this i edited the FormMetada.xml file by making optional as true. (in the attribute reference for Organization field in User management section), as mentioned in the docs.
Now when i try creating user, it shows me 'You do not have permissions to perform this operation' error.
while when i give some value in the organization field, then it creates the user.
please provide some pointers in this regard.
Thanks.You MUST provide an organizatation name. There is a system entity adapter on the Users data object. You cannot avoid populating this.
-Kevin -
Why doesn't default CREATE USER form show a "Check" Page before submitting
Hi
Interesting question.
When I create a User (using my Customized Create User Form), and I press SAVE, the Form is submitted immediately. There is no "stop-and-check" page, which allows one to review the entries made BEFORE submitting the form itself.
For example : when EDITING or UPDATING a User, and you press "Save", the form is not submitted right away. Instead, a new page opens, where you can review the changes you made, to ensure that they are correct. In fact, at the bottom of this new page, there are 4 standard buttons : SAVE...........RETURN TO EDIT............CANCEL
This is a very good system, because it allows you to check your entries, and make sure they are correct, before pressing SAVE again to submit.
However, the "Create User" form does not have this same arrangement.
Is there any way to customize the Form, so that, when creating a User, and you press SAVE, a "check-page" first shows up (just like when updating/editing a user) ?
ThanksHi
Interesting question.
When I create a User (using my Customized Create User Form), and I press SAVE, the Form is submitted immediately. There is no "stop-and-check" page, which allows one to review the entries made BEFORE submitting the form itself.
For example : when EDITING or UPDATING a User, and you press "Save", the form is not submitted right away. Instead, a new page opens, where you can review the changes you made, to ensure that they are correct. In fact, at the bottom of this new page, there are 4 standard buttons : SAVE...........RETURN TO EDIT............CANCEL
This is a very good system, because it allows you to check your entries, and make sure they are correct, before pressing SAVE again to submit.
However, the "Create User" form does not have this same arrangement.
Is there any way to customize the Form, so that, when creating a User, and you press SAVE, a "check-page" first shows up (just like when updating/editing a user) ?
Thanks -
Cannot create user form portal
Hi
We have installed NW 2004 server on windows SPS9
While creating user form portal , i am getting the following error:
##0#0#Error#1#/System/Security#Java###An exception was thrown in the UME/ABAP user management connector. Message: . --> #2#BAPI_USER_CREATE1@QSACLNT000: ID=01, NUMBER=491, MESSAGE=You are not authorized to create users in group#BAPI_USER_CREATE1@QSACLNT000: ID=01, NUMBER=491, MESSAGE=You are not authorized to create users in group#
#1.5#000C295F1EB3004900000003000000B80004346CD09B385F#1183541868109#com.sap.security.core.persistence.datasource.imp.R3Persistence#sap.com/irj#com.sap.security.core.persistence.datasource.imp.R3Persistence.createPrincipalDatabag()#J2EE_ADMIN#313##pun45idmqa45vm1_QSA_5696050#Guest#104e58202a1211dcab81000c295f1eb3#Thread[PRT-Async 0,5,PRT-Async]##0#0#Error#1#/System/Audit#Java###An exception was thrown in the UME/ABAP user management connector. Message: . --> #2#BAPI_USER_CREATE1@QSACLNT000: ID=01, NUMBER=491, MESSAGE=You are not authorized to create users in group#com.sap.security.core.persistence.datasource.PersistenceException: BAPI_USER_CREATE1@QSACLNT000: ID=01, NUMBER=491, MESSAGE=You are not authorized to create users in group
at com.sap.security.core.persistence.datasource.imp.R3PersistenceBase.handleBapiRet2Table(R3PersistenceBase.java:3136)
at com.sap.security.core.persistence.datasource.imp.R3Persistence.doBapiUserCreateChange(R3Persistence.java:5265)
at com.sap.security.core.persistence.datasource.imp.R3Persistence.doDispatchWrite(R3Persistence.java:3622)
at com.sap.security.core.persistence.datasource.imp.R3Persistence.createPrincipalDatabag(R3Persistence
Any clue what has to be dome to make it working
Best Regards
ManojHi Manoj,
Looks like your Portal uses the ABAP backend system QSACLNT000 as the
UME. Please ensure that the user being used to create other users in the portal
has sufficient permissions in the backend system also.
Regards
Srikishan -
How to populate the combo boxes that are created dynamically in jsp
Hi,
I am using JSP.
I am creating combo boxes dynamically (based on the num selected by the user). These dynamically created combo boxes need to have A-Z as options (each box) . Now, when the user chooses the option A in any of the combo-boxes,the rest should not have this option. so on..
how do i achieve this.Kindly help.You'll need to use JavaScript...I have a complicated example and a simple example, however, I cannot really understand the complex example but I know how it works. The looping is too complex for me.
First you'll need to populate a server side variable...depending on how often the data is updated you may want this to run each time a new session is created...this example is run each time Tomcat is started and the application context is initialized:
package kms.web;
// Servlet imports
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContext;
// utility imports
import java.util.Map;
// domain imports
import kms.domain.LocationService;
import kms.domain.DeptService;
import kms.domain.PatentService;
* This listenter is used to initialize
* the Maps of Locations, Patents & Depts used to populate
* pulldown lists in JSPs
public class InitializeData implements ServletContextListener {
* This method creates the Maps.
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
LocationService lServ = new LocationService();
// Create the Maps
Map campuses = lServ.getCampuses();
Map buildings = lServ.getBuildings();
Map floors = lServ.getFloors();
Map locs = lServ.getLocations();
// And store them in the "context" (application) scope
context.setAttribute("campuses", campuses);
context.setAttribute("buildings", buildings);
context.setAttribute("floors", floors);
context.setAttribute("locs", locs);
DeptService dServ = new DeptService();
Map depts = dServ.getDepts();
context.setAttribute("depts", depts);
PatentService pServ = new PatentService();
Map patents = pServ.getPatents();
context.setAttribute("patents", patents);
//I did this one myself
/* CodeService cServ = new CodeService();
Map masterMks = cServ.getCodes();
context.setAttribute("masterMks", masterMks);
* This method is necessary for interface.
public void contextDestroyed(ServletContextEvent sce) {
// I have no clue what the heck this is for???
// Let me know if you do!
}So now we travel into the PatentService method called 'getPatents();' which in turn calls a PatentDAO method
Map patents = pServ.getPatents();
Below is the code for the PatentService object:
package kms.domain;
import kms.util.ObjectNotFoundException;
import java.util.*;
* This object performs a variety of dept services, like retrieving
* a dept object from the database, or creating a new dept object.
public class PatentService {
* The internal Data Access Object used for database CRUD operations.
private PatentDAO patentDAO;
* This constructor creates a Dept Service object.
public PatentService() {
patentDAO = new PatentDAO();
public Map getPatents() {
Map patents = null;
try {
patents = patentDAO.retrieveAll();
// If the dept object does not exist, simply return null
} catch (ObjectNotFoundException onfe) {
patents = null;
return patents;
}It may be useful for you to see the code of the Patent class:
package kms.domain;
/*** This domain object represents a dept.
public class Patent implements java.io.Serializable {
private int codeGgm;
private String name = "";
private String description = "";
private int creator;
private String creationDate = "";
private int used;
* This is the full constructor.
public Patent(int codeGgm, String name, String desc, int creator, String creationDate, int used) {
this.codeGgm = codeGgm;
this.name = name;
this.description = desc;
this.creator = creator;
this.creationDate = creationDate;
this.used = used;
public Patent() { }
public int getCodeGgm() {
return codeGgm;
public void setCodeGgm(int codeGgm) {
this.codeGgm = codeGgm;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public String getDesc() {
return description;
public void setDesc(String desc) {
this.description = desc;
public int getCreator() {
return creator;
public void setCreator(int creator) {
this.creator = creator;
public String getCreationDate() {
return creationDate;
public void setCreationDate(String creationDate) {
this.creationDate = creationDate;
public int getUsed() {
return used;
public void setUsed(int used){
this.used = used;
}And here is the Database table which stores the Patents:
DESC PATENT:
CODE_GGM NUMBER(3)
NAME VARCHAR2(15)
DESCRIPTION VARCHAR2(250)
CREATOR NUMBER(10)
CREATION_DATE DATE
USED NUMBER(1)
So, we then travel into the code of the PatentDAO to see how the DAO object executes the DB query to get all of the Data we need for the select list:
package kms.domain;
import javax.naming.*;
import javax.sql.*;
import java.util.*;
import java.sql.*;
import kms.util.*;
* This Data Access Object performs database operations on Patent objects.
class PatentDAO {
* This constructor creates a Patent DAO object.
* Keep this package-private, so no other classes have access
PatentDAO() {
* This method returns a Map of all the Dept names
* The key is the Dept id
Map retrieveAll()
throws ObjectNotFoundException {
Connection connection = null;
ResultSet results = null;
// Create the query statement
PreparedStatement query_stmt = null;
try {
// Get a database connection
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/keymanOracle");
connection = ds.getConnection();
// Create SQL SELECT statement
query_stmt = connection.prepareStatement(RETRIEVE_ALL_NAMES);
results = query_stmt.executeQuery();
int num_of_rows = 0;
Map patents = new TreeMap();
// Iterator over the query results
while ( results.next() ) {
patents.put(new Integer(results.getInt("code_ggm")), results.getString("name"));
if ( patents != null ) {
return patents;
} else {
throw new ObjectNotFoundException("patent");
// Handle any SQL errors
} catch (SQLException se) {
se.printStackTrace();
throw new RuntimeException("A database error occured. " + se.getMessage());
} catch (NamingException se) {
throw new RuntimeException("A JNDI error occured. " + se.getMessage());
// Clean up JDBC resources
} finally {
if ( results != null ) {
try { results.close(); }
catch (SQLException se) { se.printStackTrace(System.err); }
if ( query_stmt != null ) {
try { query_stmt.close(); }
catch (SQLException se) { se.printStackTrace(System.err); }
if ( connection != null ) {
try { connection.close(); }
catch (Exception e) { e.printStackTrace(System.err); }
private static final String RETRIEVE_ALL_NAMES
= "SELECT code_ggm, name FROM patent ";
}Now when you wish to use the 'combo box' (also called select lists), you insert this code into your jsp:
<TR>
<%@ include file="../incl/patent.jsp" %>
</TR>
depending on how your files on your server are organized, the "../incl/patent.jsp"
tells the container to look up one directory from where the main jsp is to find the 'patent.jsp' file in the 'incl' directory.
I need some help creating multi-level select lists with JavaScript:
Can anyone explain this code:
<%@ page import="java.util.*,kms.domain.*" %>
<jsp:useBean id="campuses" scope="application" class="java.util.Map" />
<TR><TD ALIGN='right'>Campus: </TD>
<TD>
<select name="campus" size="1" onChange="redirect(this.options.selectedIndex)">
<option value="0" selected>No Campus</option>
<% LocationService ls = new LocationService();
Iterator c = campuses.keySet().iterator();
Map[] bm = new Map[campuses.size()];
Map[][] fm = new Map[campuses.size()][0];
Map[][][] lm = new Map[campuses.size()][0][0];
int i2 = 0;
int j2 = 0;
int k2 = 0;
int jj = 0;
int kk = 0;
while (c.hasNext()) {
Integer i = (Integer)c.next();
out.print("<OPTION ");
out.print("VALUE='" + i.intValue()+ "'>");
out.print( (String) campuses.get(i) );
out.print("</OPTION>");
bm[i2] = ls.getBuildingsByCampus(i.intValue());
fm[i2] = new Map[bm[i2].size()];
lm[i2] = new Map[bm[i2].size()][];
Iterator b = bm[i2].keySet().iterator();
j2 = 0;
while (b.hasNext()) {
Integer j = (Integer)b.next();
fm[i2][j2] = ls.getFloorsByBuilding(j.intValue());
lm[i2][j2] = new Map[fm[i2][j2].size()];
Iterator f = fm[i2][j2].keySet().iterator();
k2 = 0;
while (f.hasNext()) {
Integer k = (Integer)f.next();
lm[i2][j2][k2] = ls.getLocationsByFloor(k.intValue());
k2++;
kk++;
j2++;
jj++;
i2++;
} %>
</select></TD>
</TR>
<TR><TD ALIGN='right'>Building: </TD>
<TD>
<select name="building" size="1" onChange="redirect1(this.options.selectedIndex)">
<option value="0" selected>No Building</option>
</select></TD>
</TR>
<TR><TD ALIGN='right'>Floor: </TD>
<TD>
<select name="floor" size="1" onChange="redirect2(this.options.selectedIndex)">
<option value="0" selected>No Floor</option>
</select></TD>
</TR>
<TR><TD ALIGN='right'>Room: </TD>
<TD>
<select name="location_id" size="1">
<option value="0" selected>No Room</option>
</select></TD>
</TR>
<script>
var cNum = <%=i2%>
var bNum = <%=jj%>
var fNum = <%=kk%>
var cc = 0
var bb = 0
var ff = 0
var temp=document.isc.building
function redirect(x){
cc = x
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
temp.options[0]=new Option("No Building", "0")
if (cc!=0) {
for (i=1;i<=group[cc-1].length;i++){
temp.options=new Option(group[cc-1][i-1].text,group[cc-1][i-1].value)
temp.options[0].selected=true
redirect1(0)
var group=new Array(cNum)
for (i=0; i<cNum; i++) {
group[i]=new Array()
<% for (int i=0; i< bm.length; i++) {
Iterator bldgs = bm[i].keySet().iterator();
int j = 0;
while (bldgs.hasNext()) {
Integer intJ =(Integer) bldgs.next(); %>
group[<%=i%>][<%=j%>] = new Option("<%=bm[i].get(intJ)%>", "<%=intJ%>");
<% j++;
} %>
var group2=new Array(cNum)
for (i=0; i<cNum; i++) {
group2[i] = new Array()
for (j=0; j<=bNum; j++) {
group2[i][j] = new Array()
<% for (int i=0; i< fm.length; i++) {
for (int j=0; j< fm[i].length; j++) {
Iterator flrs = fm[i][j].keySet().iterator();
int k = 0;
while (flrs.hasNext()) {
Integer intK =(Integer) flrs.next(); %>
group2[<%=i%>][<%=j%>][<%=k%>] = new Option("<%=fm[i][j].get(intK)%>", "<%=intK%>");
<% k++;
} %>
var temp1=document.isc.floor
var camp=document.isc.campus.options.selectedIndex
function redirect1(x){
bb = x
for (m=temp1.options.length-1;m>0;m--)
temp1.options[m]=null
temp1.options[0]=new Option("No Floor", "0")
if (cc!=0 && bb!=0) {
for (i=1;i<=group2[cc-1][bb-1].length;i++){
temp1.options[i]=new Option(group2[cc-1][bb-1][i-1].text,group2[cc-1][bb-1][i-1].value)
temp1.options[0].selected=true
redirect2(0)
var group3=new Array(cNum)
for (i=0; i<cNum; i++) {
group3[i] = new Array()
for (j=0; j<=bNum; j++) {
group3[i][j] = new Array()
for (k=0; k<=fNum; k++) {
group3[i][j][k] = new Array()
<% for (int i=0; i< lm.length; i++) {
for (int j=0; j< lm[i].length; j++) {
for (int k=0; k< lm[i][j].length; k++) {
Iterator locs = lm[i][j][k].keySet().iterator();
int m = 0;
while (locs.hasNext()) {
Integer intM =(Integer) locs.next(); %>
group3[<%=i%>][<%=j%>][<%=k%>][<%=m%>] = new Option("<%=lm[i][j][k].get(intM)%>", "<%=intM%>");
<% m++;
} %>
var temp2=document.isc.location_id
function redirect2(x){
ff = x
for (m=temp2.options.length-1;m>0;m--)
temp2.options[m]=null
temp2.options[0]=new Option("No Room", "0")
if (cc!=0 && bb!=0 && ff!=0) {
for (i=1;i<=group3[cc-1][bb-1][ff-1].length;i++){
temp2.options[i]=new Option(group3[cc-1][bb-1][ff-1][i-1].text,group3[cc-1][bb-1][ff-1][i-1].value)
temp2.options[0].selected=true
</script>
This produces a related select list with 4 related lists by outputting JavaScript to the page being served. It works the same way as the first example that I describe but I don't understand the looping...maybe someone could explain how to go from the single select list to a double and/or triple level drill down? -
OIM 11gR2 - custom attribute with illegal binding on Create User form in published sandbox
Hi,
I think I have managed to paint myself into a corner!
In OIM 11gR2 I have added a number of custom attributes to the "User Form" - some Text-, some Lookup-type attributes.
While customizing the "Create User" page within a sandbox and adding a SelectOneChoice item and fiddling around with its binding, I was distracted by a phone call and the browser timed out.
The binding property on the new item is now not correct and the sandbox has unfortunately been published, and I am now unable to enter the "Create User" page - when I try, I get the following:
<Sep 23, 2013 2:39:11 PM CEST> <Warning> <oracle.adf.view.rich.component.fragment.UIXRegion> <ADF_FACES-00009> <Error processing viewId: /user/createView URI: /oracle/iam/ui/runtime/form/view/pages/userCreateForm.jsff actual-URI: /oracle/iam/ui/runtime/form/view/pages/userCreateForm.jsff.
javax.el.PropertyNotFoundException: Target Unreachable, 'ekstraresource1__c' returned null
at com.sun.el.parser.AstValue.getTarget(AstValue.java:108)
at com.sun.el.parser.AstValue.isReadOnly(AstValue.java:149)
at com.sun.el.ValueExpressionImpl.isReadOnly(ValueExpressionImpl.java:248)
at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:128)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:340)
<Sep 23, 2013 2:39:11 PM CEST> <Warning> <oracle.adf.view.rich.component.fragment.UIXRegion> <ADF_FACES-00009> <Error processing viewId: /catalog-tf/cart-details URI: /oracle/iam/ui/catalog/pages/cart-details.jsff actual-URI: /oracle/iam/ui/catalog/pages/cart-details.jsff.
javax.el.PropertyNotFoundException: Target Unreachable, 'ekstraresource1__c' returned null
at com.sun.el.parser.AstValue.getTarget(AstValue.java:108)
at com.sun.el.parser.AstValue.isReadOnly(AstValue.java:149)
at com.sun.el.ValueExpressionImpl.isReadOnly(ValueExpressionImpl.java:248)
at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:128)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:340)
Caused By: java.io.IOException: javax.el.PropertyNotFoundException: Target Unreachable, 'ekstraresource1__c' returned null
at oracle.adfinternal.view.page.editor.renderkit.PageCustomizableRenderer.encodeAll(PageCustomizableRenderer.java:764)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1396)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:341)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:767)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:405)
etc.
Of course the sandbox should not have been published - but it is - and I am stuck trying to figure out how to somehow undo this mess.
Is it possible to clean up this mess by diving to the database and removing some rows from the right tables - or perform some other operations undo my mistake?
Thanks in advance,
- Tomoim version is oim 11gR2 with BP4
-
OIM 11gR2 - unable to suppress display of iPlanet process form
OIM 11gR2 or 11.1.2
SJSDS Connector 9.0.4
I have configured the SJSDS connector, it resource, etc and am able to manually/directly provision iPlanet User to an OIM user through the identity interface.
I have configured the process form to pre-populate all necessary fields.
I have checked the Auto Save Form checkbox within the iPlanet User Process Definition.
It is my expectation that when an administrator directly assigns the resource to a user they will not be presented with the process form. However, when we directly assign the resource, the process form is displayed causing the administrator to submit the form.
I have double checked the documentation regarding Auto Save Form within the Developer's Guide for Oracle Identity Manager 11g Release 2 (11.1.2) - E27150-03 and the Oracle® Identity Manager Connector Guide for Sun Java System Directory Release 9.0.4 - E10446-12 and I believe my expectations are correct.
1) Has anyone successfully suppressed the process form while direct or manually provisioning SJSDS through the identity interface?
2) Could the Auto Save Form be only related to request-based provisioning?
Thank you in advance.These are also good questions but I'll give details :-)
1) Does that make the "Auto Save Form" checkbox useless? -
NO, If you don't do this then your Provisioning will stuck into System Validation.
2) Can you "Auto Save" the Application Instance form?
NO, as per Oracle either hide these attributes or delete these attributes but there's no clean way to delete such things.
Question For You:
If you don't want to Auto Save your Application Instance Form then why did you create that.
Workaround:
If you don't want Application Instance then create one more Application Instance without any form -
Combo Box not working in Search Form After migrating to Jdev11.1.2.1
Hi,
I developed my application using Jdev11.1.1.3 and its works fine. I migrated my application to jdev11.1.2.1. After migration when i run my application, in search form combo box displaying ArrayIndexOutOfBound Exception while searching through it. This exception is only throwing for Combo box and choice list. When I changed combo box to InputListOfValues and ComboBox with ListOfValues its working. Please help.Try this on jdev 11.1.1.3 if possible. If not, try everything with 11.1.2.1.
1. Select Model project and invoke "Clean Model.jpr" (Menu->Build->Clean XXX). Do the same for View project.
2. Delete all /classes/ folders from model and view projects
3. Visit view project dependencies (under project properties->Libraries and classpath) and see if JDev is reporting any error there. Delete the errored dependency if any.
now, follow this on 11.1.2.1
4. Migrate (i.e. open the app in 11.1.2.1)
5. Rebuild all.
Maybe you are looking for
-
Can no longer read DVDs or CDs--DESPERATE
I am running OSX 10.7.3. Yesterday all my thousands of fonts completely disappeared from Suitcase Fusion 2. I was told by Extensis that I could not get them back, but that I needed to upgrade to Fusion 3 which would be compatible with Lion. I did tha
-
Hi, Can any one tell me, when(month and year) the ECC 5.0 version is launched into the market. Thanks in advance..
-
Sql Developer 1.1 is bundled in Oracle 11g
Dear, The Oracle 11g is bundled with SQL Developer 1.1. I could install Sql Developer 1.5 in the same machine. But two Sql developers 1.1 and 1.5 are there eating the disk space. How to uninstall only the SQL developer 1.1 which bundled with Oracle11
-
Error triggering EDI subsystem (GIS): Process request without transaction.
I'm trying to configure SAP to trigger the EDI subsytem (Sterling's GIS). I'm getting error status "20": Error for Remote Function Call with port "GIS" Error message from RFC_REMOTE_EXEC Process request without transaction. TID is empty. Does anyone
-
In CRM 2007 what is the code behind the Navigation bar?.
In CRM 2007 what is the code behind the Navigation bar?. Jason