Problem: custom validator messages internationalized

Hello everyone,
I am trying to have a message that may be issued by a validator internationalized.
Unfortunately I have no idea how to retrieve the appropriate bundleName (see comment in code below).
It would be nice if someone could give me a hint how to solve the problem.
Is there a nicer, more object orientated way of using Resource Bundles from Java?
In the validator I am using the following code (taken in parts from Core JSF):
public void passwordField_validate(FacesContext context, UIComponent component, Object value) {
UIViewRoot viewRoot=context.getViewRoot();
Locale locale=viewRoot.getLocale();
ClassLoader loader=Thread.currentThread().getContextClassLoader();
Application app=context.getApplication();
String bundleName=app.getMessageBundle();
if(bundleName==null) {
// Since this is null I have a problem: How do I find the correct bundleName?
ResourceBundle bundle=ResourceBundle.getBundle(bundleName,locale,loader);
String incorrectPassword;
try {
incorrectPassword=bundle.getString("incorrectPassword");
} catch (MissingResourceException mre) {
// error handling
// more code
My faces-config.xml looks like this:
<faces-config>
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>de</supported-locale>
</locale-config>
</application>
</faces-config>
and my Bundle.properties looks like this:
incorrectPassword=Incorrect Password.
similarly I have Bundle_de.properties, etc.

I found a solution myself.
The only drawback is that you need to fill in the name of the project.
I used the code below:
static public String getBundleString(FacesContext context, String key) {
String text=null;
try {
ResourceBundle bundle =
ResourceBundle.getBundle("<project_name>.Bundle",
context.getViewRoot().getLocale());
text=bundle.getString(key);
} catch (Exception e) {
text = "???" + key + "???";
return text;
}

Similar Messages

  • Label on custom validation message

    Hi,
    I�m trying to display a the label of a input on a custom validation message using h:messages, for example:
    "The field Email is required"
    I don�t want to use the requiredMessage attribute of the outputText because I wish to apply it for all fileds on my application.
    I�ve tried something like that:
    On the jsp:
    <h:outputLabel for="email" value="Email" />
    <h:inputText value={bean.email} required=true />On the bundle:
    javax.faces.component.UIInput.REQUIRED=The field {0} {1} is requiredBut, the {0} parameter is the component ID, and the {1} parameter resolves to null.
    Please help, this is very important to me.
    THanks

    The {1} should resolve to the label of the inputText component. Note that here (and in the documentation) 'label' refers to the value of the label attribute on the inputText component itself. It does not refer to the value of an outputLabel component that is 'for' the input component.
    So you want the following:
    <h:outputLabel for="email" value="Email" />
    <h:inputText id="email" value="#{bean.email}" required="true" label="Email" />Note I also added an id to pair with the for attribute.

  • Custom validation Messages printed more than once :-(

    Hi,
    I have added a Custom Validator to a drop down list box (h:selectOneMenu) and for a text field. and i bound these form elements to the corresponding UIComponent Object in the becking bean. The backing bean is in session scope I have a link which will forward to a different page and i disabled the validation on this link by setting immediate as true.
    But when the user clicks the command link goes second page and then comes back to the first page and click the submit button, the validation error occurs. But to my surprise i am getting the same Validation error message printed twice or thrice (as when we are going to the second page and then comes back and submits).
    If I am correct the Validator corresponding to the component keeps the old error state and then add the new error state.
    I tried to remove one FacesMessage object which i got from Iterator of FacesContext.getMessages() and then tried. but hence also i was getting the same result.
    When i looked at the log, i foud my validator class being invoked twoce (or thrice depending upon the no. of times i went to the secoond page).
    Can you please help me out from this problem?
    Thanking you,
    Sudheesh

    If it is indeed 1.1, I'd recommend trying 1.1_02 [1] and trying again.
    [1] https://javaserverfaces.dev.java.net/servlets/ProjectDocumentList?folderID=5225&expandFolder=5225&folderID=5220

  • Sun JSF 1.1 or MyFaces Custom Validator Messages.

    Hello i must use JSF 1.1 version for some old project. The problem is that NOW i must use localization and internationalization API to make it "good" in my own language - Bulgarian ( Cyrilic language)
    The problem is that input components for 1.1 doesnt have attribute "label" i have defined in my resource bundle file the keys for standart validators such as this for example:
    javax.faces.component.UIInput.REQUIRED={0} \u041F\u043E\u043B\u0435\u0442\u043E \u0435 \u0437\u0430\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E
    but the {0} parameter is aways - null ( and is not showed ) or is equal to the ID of the component which is English (ASCII) and it is not usable .. becouse it is ugly .
    Can i make not so user friendly think like label but Something ?
    can i pass some value to the validator ? ( which can be unicode )
    Message was edited by:
    JOKe

    part of faces-config.xml:
    <application>
         <message-bundle>com....resources.Messages</message-bundle>
         <locale-config>
              <default-locale>de_DE</locale-locale>
              <supported-locale>en_GB</supported-locale>
         </locale-config>
    </application>This works for us.

  • Problem with custom validated data types using domain on 11g

    Hi,
    I ' m on a migration process from 10 to 11 and I notice that a custom domain didn't work correctly anymore
    to be more specific every time that I was submiting a page a was getting an error cannot convert from myclass to oracle.jbo.domain.String
    I search the forum and I saw a similar problem
    Cannot convert type class java.lang.String to class oracle.jbo.domain.Clob
    at which Frank says that it is a known bug and suggests a work around.
    I use the workaround and it worked but some more issues came up:
    1. If the validation fails I get the error that I throw at the validate method not in a popup with just my message
    but in the whole window with the whole error stack, meaning that my custom validation is not handled like native ADF validation errors by
    the framework (at 10.1.3.4 worked OK)
    2 If i dont give a value at the attribute in the validation phase mdata variable is not null but is length is zero (at 10.1.3.4 its value was null)
    public class AFM implements DomainInterface, Serializable {
    public AFM(String val) {
    mData = new String(val);
    validate();
    private String mData;
    protected void validate() {
    // ### Implement custom domain validation logic here. ###
    mData==null // returns false
    mData.length()==0 // returns true
    3. Can i force validation only for new or updated values? I saw that the validation process is taking place every time a row is fetched.
    This is not only a performance issue, the bigger problem is that if a fetched from the DB value fails the validation an error is return but the
    user cannot change the value to correct it.
    TIA
    Tilemahos

    since i don't get any answer I wonder if i should have use a more provocative title like
    "custom domains in 11g don't work"
    is it true?
    Tilemahos

  • Pop up error messages for failed custom validation

    I am using jdev-10.1.3.4
    My application is in ADF BC
    I am writing custom validation through managed bean, I want pop-up error message for this failed validation.
    My problem scenario is:
    I had some list box as "status"-when this status changes to failed then the other field namely "closed date" should become madantory and also date in closed date field can't be in future.I am able to have all this validation through managed bean and also able to use af:messages through which i am able to print error message on the top of the form, but i am not able to give pop up error message for this failed validation.
    I had gone thru jdev guide but there is nothing like what i am asking.
    it would be of great help if someone can give me some example also.
    thanks in advance.

    ADF has global setting where you can configure the way messages are shown to user:
    You can make this setting in adf-faces-config.xml
    The <client-validation> element controls how client-side converters and validators are run.
    Three values are supported:
    "INLINE": validation is shown inline in a page (the default)
    "ALERT": validation is shown in an Javascript alert
    "DISABLED": validation is only handled on the server
    IN your case, set it to 'ALERT'.

  • Problem with iChat changing my custom away message after 30 minutes

    Lately, I've been having a big problem with iChat changing any custom away message that I put up to "Away" after 30 minutes or so. Is there anything I can do to make it stop? Another issue I'm having is that sometimes when people on my buddy list change their away message, it doesn't show up on iChat unless I go offline and then sign back on. Any idea why it's doing that, and what I can do to get it to stop?
    Thanks.
    - Danielle
    G3 iMac   Mac OS X (10.3.9)  

    Hi ienjoyanime,
    Go to the General Section of iChat Preferences.
    Does it say you are set to Go to Away when you log off/QUit iChat ?
    is the computer going to Sleep at this point ?
    10:59 PM Saturday; April 1, 2006

  • Overwrite Standard Validation message to Custom message

    Hello Gurus,
    I searched and have gone through lot of resources but did not find solution and came up with this question.
    I have a scenario where I can not make action(Save) as validation independent. So, I tried using IF_WD_MESSAGE_MANAGER methods in WDDOBEFOREACTION as below.
    1) Used HAS_VALIDATION_ERRORS If true got all the messages using method GET_MESSAGES.
    2) Loop through messages of perticular attribute and deleted message based on MSG_ID using REMOVE_MESSAGE.
    3) And tried to set custom error message using REPORT_ATTRIBUTE_ERROR_MESSAGE.
    But to my suprise IF_WD_MESSAGE_MANAGER->GET_MESSAGES is not returning any messages even though there exists a validation erro, though HAS_VALIDATION_ERRORS returning TRUE.
    Cant we make use of GET_MESSAGES in WDDOBEFOREACTION or anything wrong in my logic.
    Any inputs would be appreciated!
    Thanks a ton in advance!
    Regards,
    Pavan.
    Edited by: Pavankumar Adiraju on Aug 1, 2011 6:42 AM

    Thanks for the response!!
    @ Srinivas: Sorry, I missed one more step wherein I use message object(MSG_OBJECT) of messages returned by GET_MESSAGES to get the specific message using GET_TEXT.
    So, to rephrase I will only overwrite specific error message with my custom message.
    @ Kranthi : Before posting the question I found the forum suggestion you mentioned but did not find a way to get reference to it.
    Please tell me if you know how to get reference of IF_WD_VALIDATION in WDDOBEFOREVALIDATION to use it.
    Regards,
    Pavan.

  • Oracle Devs -  "Customizing a Standard Validator Message" tutorial moved?

    Guys and Gals,
    Page 366 of the Oracle JDeveloper 11g Handbook: A Guide to Oracle Fusion Web Development references a "Customizing a Standard Validator Message" tutorial on java.sun.com.
    It is nowhere to be found. Java.sun.com redirects to another oracle webpage, and the JDev tutorials do not seem to cover this material.
    I'm not looking to add my own custom validator, but rather modify the default JSF error message. i.e. Change standard validator text from "Too many objects match the primary key oracle.jbo.key[<mypart>]" to "Part <mypart> already exists.".
    Can anyone reference another tutorial for this topic?
    Thanks in advance.

    HaHa! Finally found something similar. Sweet sauce.
    http://netbeans.org/kb/docs/web/convert-validate.html#08

  • Customizing EO validation messages

    Example use case (JDeveloper 11.1.1.6):
    - I have one EO that maps to one VO that is displayed in two different jsff tabs (tab1, tab2).
    - The EO has an attribute (say Myint of type oracle.jbo.domain.Number that corresponds to a NUMBER(10,0) db type).
    - Myint appears in both tabs, however in tab1 it is referred as"int1" and in tab2 as "int2".
    - The attribute has a validation rule (at EO level) based on the corresponding db type (basically requesting that it is an integer).
    I read/believe that validation, if possible should be done at EO level (and it makes sense as you define once and reuse in all screens).
    Here are my questions:
    1) In the 'Edit Validation rule ' pop-up (EO) I can define an error message based on an key from a rb.
    In my case, I have a generic message like 'An integer value is required for the 'Myint' field.'
    How can I customize the messages for the specific jsff tabs, e.g., get messages like:
    An integer value is required for the 'int1' field.'
    An integer value is required for the 'int2' field.'
    I want to avoid client validation; however I would like to be able also customize my error message. Is there a way to do this?
    I know I can pass a expression to the message text, but still this does not really help me.
    Now if I cannot do this, does not this limits the usability of EO validation?
    2) Is there a way to have ADF create the red box around the erroneous field. In my view this is nice to have as it directly identifies the issue.
    Thanks

    Hi,
    I am using JDev 11g R2 and it has a red box highlighted for any validation failure of attribute (your point#2) but not sure if it's there in your jdev version :)
    Coming to your issue,
    For EO, it is always the same field irrespective of it coming from vo1 or vo2 and you don't have control of validation messages of vow/vo2 directly on EO however you can achieve your requirement in couple of ways
    Option#1. You can have a custom entity level validation (invoke your custom method with what ever message you want to throw)
    Option#2: You can create a transient attribute in your EO of String type and update your VO1 and VO2 to add the new transient attribute and always keep that transient attribute with int1 or int2 (based on your VO usage)
    and now in your validation error message of attribute you can use place holder to read the value from transient attribute
    for e.g. you error message looks like "Please fill the value for field {field}"
    and it will populate field in token list in the same editor window, there in field value give it as Attribute name of transient attribute.
    Regards,
    Ravi Nuka.

  • Custom error messages on while validating User profile

    Hi,
    I have developed a valadation handler to validate data of a user while creating/updating.
    If any of the attribute valation failed then my ValidationFailedException is getting triggered but it is showing my custom message on the server logs and on UI console i am getting "Server error occured" message. It is not display my custom errror message on the ui console.
    Please let me know the steps to perform to show my custom error messages on ui console.
    Below are the steps I followed.
    1) Develeped a class which implements ValidationHandler.
    2) Imported plugin into MDS database
    3) Imported EventHandler xml into MDS database.

    {thread:id=2256511}
    -Bikash

  • Validator Message Generation Problem

    I have a number of input fields and drop downs in a form, all of which have validators attached to them.
    When the form is submitted, the validation messages are generated in no particular sequence, and also I don't get all the validator messages at once. I get a few, fix them then get some more again.
    Would appreciate insight into 'in what sequnce are the validator messages generated' if there are multiple validators in a form. How can I control the sequence in which these messages are displayed, and why are'nt all the validator messages displayed all at once in a form?
    Regards
    Haroon

    Hi Haroon,
    The situation in which all the validator messages were not displayed is when the required property for a particular field is set to true. The validator messages for all the input fields before this are displayed but none of the messages for the fields appearing after the field for which the required property is set to true.
    One of the options that could be tried is to have inline message component for the input fields which would make it easier to identify the validator messages.
    Hope this helps
    Cheers
    Giri

  • How to create Custom error message in SharePoint 2013

    Hi,
    I have created one document library.On uploading the same file SharePoint throws error as"server error.The same file exit".
    But my requirement is not to show the SharePoint default message.I wanted to create custom message and show the pop up for the same file upload.
    Is there any way to create any custom error page or can I manipulate SharePoint default error page?
    Any help?
    Thank you

    Hi,
    You can create an event receiver to set the validation error messages.  One such post to redirect the custom error page is as follows
    https://social.msdn.microsoft.com/Forums/office/en-US/2bc851f6-e04b-4550-b87f-9b874a290482/sharepoint-event-receivers-and-custom-error-messages?forum=sharepointdevelopmentlegacy
    Create custom error page for SharePoint event receiver
    Please mark it answered, if your problem resolved or helpful.

  • How to show custom error message in WebADI Excel template?

    Hi,
    I've  created a custom Web ADI integrator and associated it with a 'Procedure' based custom interface.
    WebADI Interface API Returns is set to  "Error Message".
    I'm using  raise_application_error(-20001, "Actual Error Message") for invalid rows,but custom error message from PL/SQL  is not populated on the excel template.
    Instead it is showing "SQL exception occurred during PL/SQL upload".
    Am I missing anything? How to show custom error message from Pl/SQL procedure to WebADI Excel template?
    TIA
    Narasimha

    The custom API errors are visible in the BNE log but not on the Excel.
    BNE Log=>
    12/10/13 2:52 PM Web ADI Upload Job 13008 ERROR          BnePLSQLUpload.doUpload: Exception while uploading to PL/SQL API.  Error Code: 20001, Message: ORA-20001: -Please enter CONTAINER_ID -  Enter PO_NO -
    ORA-06512: at "APPS.XXPO_COSTFACTS_WEBADI_PKG", line 264
    ORA-06512: at line 1
    12/10/13 2:52 PM Web ADI Upload Job 13008 ERROR          BnePLSQLUpload.doUpload: Stack trace: java.sql.SQLException: ORA-20001: -Please enter CONTAINER_ID -  Enter PO_NO -
    ORA-06512: at "APPS.XXPO_COSTFACTS_WEBADI_PKG", line 264
    ORA-06512: at line 1
      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
      at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
      at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
      at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
      at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
      at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:202)
      at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1005)
      at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
      at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
      at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3550)
      at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4710)
      at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
      at oracle.apps.bne.integrator.upload.BnePLSQLUpload.doUpload(BnePLSQLUpload.java:284)
      at oracle.apps.bne.integrator.upload.BneSAXUploader.processDeepestLevel(BneSAXUploader.java:2346)
      at oracle.apps.bne.integrator.upload.BneSAXUploader.startElement(BneSAXUploader.java:1182)
      at oracle.xml.parser.v2.XMLContentHandler.startElement(XMLContentHandler.java:181)
      at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1288)
      at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:336)
      at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:303)
      at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:234)
      at oracle.apps.bne.integrator.upload.BneUploader.processUpload(BneUploader.java:301)
      at oracle.apps.bne.integrator.upload.BneAbstractUploader.processUpload(BneAbstractUploader.java:114)
      at oracle.apps.bne.integrator.upload.async.BneAsyncUploadThread.run(BneAsyncUploadThread.java:140)
    12/10/13 2:52 PM AJPRequestHandler-HTTPThreadGroup-5 WARNING        BneOracleWebAppsContext.getTimeZone CLIENT_TIMEZONE_ID has not been set
    12/10/13 2:52 PM AJPRequestHandler-HTTPThreadGroup-5 ERROR          BneOracleWebAppsContext.getExtraJDBCConnection recieved the same connection as the base connection.  There may be transaction problems.
    How to show the same error in the excel template?
    Here is the package:
    CREATE OR REPLACE PACKAGE BODY APPS.XXPO_COSTFACTS_WEBADI_PKG
    AS
       PROCEDURE upload_data (
                              P_CONTAINER_ID IN VARCHAR2
                            , P_SAIL_DATE IN DATE
                            , P_PO_NO IN VARCHAR2                     
                             ) IS
        --declare
        lv_err_msg      VARCHAR2(240);
        lf_err_flag     NUMBER := 0;
        ln_temp         NUMBER;
        BEGIN
        --------------------- checking for mandatory parameters---------------------------
          IF (P_CONTAINER_ID IS NULL) THEN
             lf_err_flag := 1;
             lv_err_msg := lv_err_msg||'-'||'Please enter CONTAINER_ID - ';
          END IF;
          -------------Validation for Sail Date Format----------------------
          IF (P_SAIL_DATE IS NULL) THEN
             lf_err_flag := 1;
             lv_err_msg := lv_err_msg || ' ' || 'Enter Sail Date - ';
          ELSE
             BEGIN
                SELECT 1
                  INTO ln_temp
                  FROM DUAL
                 WHERE P_SAIL_DATE =  TO_DATE (TO_CHAR (P_SAIL_DATE, 'DD-MON-YYYY'), 'DD-MM-YYYY');
             EXCEPTION
                WHEN NO_DATA_FOUND THEN
                   lf_err_flag := 1;
                   lv_err_msg := lv_err_msg || ' Enter Sail date in DD-MON-YYYY Format';
                WHEN OTHERS THEN
                   lf_err_flag := 1;
                   lv_err_msg := lv_err_msg || ' Enter Sail date in DD-MON-YYYY Format'|| SQLERRM;
             END;
          END IF;
          -------------Validation for PO_Number----------------------
          IF (P_PO_NO IS NULL) THEN
             lf_err_flag := 1;
             lv_err_msg := lv_err_msg || ' ' || 'Enter PO_NO - ';
          ELSE
             BEGIN
                SELECT count(1)
                  INTO ln_temp
                  FROM PO_HEADERS
                 WHERE Attribute4 =  P_PO_NO;
             EXCEPTION
                WHEN NO_DATA_FOUND THEN
                   lf_err_flag := 1;
                   lv_err_msg := lv_err_msg || ' No Oracle PO for Biceps PO#'||P_PO_NO;
                WHEN OTHERS THEN
                   lf_err_flag := 1;
                   lv_err_msg := lv_err_msg || ' Error getting the Oracle PO for Bicpes PO#'||P_PO_NO||' Error-' || SQLERRM;
             END;
          END IF;
         -----------------------Insert Record----------------------------
         IF lv_err_msg is NULL THEN
         BEGIN
             INSERT
              INTO XXP2P_HW_COST_FACTORS_STG
                     CONTAINER_ID
                    ,SAIL_DATE
                    ,PO_NO
                    , ERROR_FLAG
                    , ERROR_MSG
                   ,CREATED_BY
                    ,CREATION_DATE
                    ,LAST_UPDATED_BY
                    ,LAST_UPDATE_DATE
                    ,LAST_UPDATE_LOGIN              
                VALUES
                     P_CONTAINER_ID
                    ,P_SAIL_DATE
                    ,P_PO_NO              
                    ,lf_err_flag
                    ,lv_err_msg
                  ,FND_GLOBAL.USER_ID
                    , trunc (sysdate)
                    ,FND_GLOBAL.USER_ID
                    , trunc (sysdate)
                    ,FND_GLOBAL.LOGIN_ID              
                  --  commit;
                  DBMS_OUTPUT.put_line
                    '-' || 'After ap_invoices_interface'
            EXCEPTION
            WHEN OTHERS THEN
              ROLLBACK;
              lf_err_flag := 1;
              lv_err_msg  := lv_err_msg || ' ' || 'error loading CONTAINER_ID-' || P_CONTAINER_ID || SQLERRM;
              raise_application_error(-20001, lv_err_msg);
            END;
        ELSE
              raise_application_error(-20001, lv_err_msg);
        END IF;
      END upload_data;                        
    END XXPO_COSTFACTS_WEBADI_PKG;

  • Custom error messages in selection-screen

    Hello All,
    I have one query. I have developed a vendor aging report. In the SELECT-OPTIONS, there are 5 fields namely company code, business area, vendor group, vendor code and cash management group. What the user wants is if he enters any invalid value in any of the 5 fields, custom error message should be displayed like 'invalid company code' etc. I think we have to write these messages in 'at-selection-screen' event. Can u help me out with a sample code snippet w.r.t the above program? I have written the code as:
    AT SELECTION-SCREEN.
      IF S_BUKRS ne BSIK-BUKRS.
      MESSAGE e000. 'invalid company code' TYPE 'E'.
      ENDIF.
    But not giving the correct output.i.e. even if I enter a valid company code, the error message is displayed. Can u help me in solving this problem?
    Thanks and Regards,
    Satvik
    Edited by: Satvikpanchal on Jul 22, 2011 9:42 AM

    Hi,
      use AT SELECTION-SCREEN on S_BUKRS-low.
    Use select query for checking the Company code in T001 table check the
    Company code already exist or not? If it is not there show the message.
    Code like
    AT SELECTION-SCREEN on S_BUKRS-low.
    select single bukrs into lv_bukrs
          from T001 where bukrs = s_bukrs-low.
    if sy-subrc NE 0.
    MESSAGE e000. 'invalid company code' TYPE 'E'.
    ENDIF.
    i think you company code is select option so you have to check S_BUKRS-high also.
    using the event AT SELECTION-SCREEN on S_BUKRS-high.
    Regards,
    DHina..

Maybe you are looking for