Tabris本地存储

时间:2013-05-08 13:34:30

标签: local-storage tabris

我想为一个用户使用不同的功能,如收藏夹和约会。我需要在应用程序中登录数据。但是可以在Tabris Framework中使用本地存储吗?

3 个答案:

答案 0 :(得分:0)

Tabris有一个名为ClientStore的客户端服务(RWT.getClient()。getService(ClientStore.class))来保存设备上的信息。无论如何,不​​建议将这些数据保存在设备上。建议的方法是使用ClientStore存储令牌,以便在下次打开应用程序时识别用户。使用此令牌,您可以存储数据,例如在服务器上的数据库中。可以将ClientStore与Web浏览器的cookie进行比较。您永远不会在cookie中保存太多数据。

答案 1 :(得分:0)

我即将使用ClientStorage。现在我正在用Tabris测试一些东西,我使用了这里的指南http://eclipsesource.com/blogs/2013/02/18/tabris-0-11-0-new-noteworthy/

我正在测试将ClientStorage对象从值“false”设置为“true”。但每次我退出应用程序并重新进入时,该值都会再次返回“false”。

 private void createContent( final UIContext context ) { 
    final ClientStore storageLogin = RWT.getClient().getService( ClientStore.class );
    storageLogin.add( "username", "none" );
    storageLogin.add( "passwd", "none" );
    storageLogin.add( "isLoggedIn", "false");
    labelUsername = new Label( containerContent, SWT.NONE );
    labelUsername.setText( "Username:" );
    final Text usernameText = new Text( containerContent, SWT.BORDER );
    final Label labelPasswd = new Label( containerContent, SWT.NONE );
    labelPasswd.setText( "Password:" );
    final Text passwdText = new Text( containerContent, SWT.PASSWORD | SWT.BORDER );
    final Button buttonLogin = new Button( containerContent, SWT.PUSH );
    if(storageLogin.get( "isLoggedIn" ) == "false"){
      buttonLogin.setText( "Log in" );
    }
    else{
      buttonLogin.setText( "Logged in!" );
    }
    buttonLogin.addSelectionListener( new SelectionListener() {

      public void widgetSelected( SelectionEvent event ) {
        if(storageLogin.get( "isLoggedIn" ) == "false"){
          StringBuilder stringBuilder = new StringBuilder();
          stringBuilder.append( "Username: " + usernameText.getText() + "\n" );
          stringBuilder.append( "Password: " + passwdText.getText() + "\n" );
          System.out.println( "Stringbuilder: \n" + stringBuilder.toString() );
          storageLogin.add( "username", usernameText.getText() );
          storageLogin.add( "passwd", passwdText.getText() );
          storageLogin.add( "isLoggedIn", "true" );
          buttonLogin.setText( "Logged in!" );
        }
        else{

        }

      }

      public void widgetDefaultSelected( SelectionEvent e ) {
      }
    } );

  }

当然,我不会以明文形式保护任何密码,只是试验一下。 :)

答案 2 :(得分:0)

我想说这是因为你执行了storageLogin.add(“isLoggedIn”,“false”);每次访问应用程序时。这将覆盖传输的值并将其存储回客户端。如果storageLogin.get(“isLoggedIn”),我建议只将其设置为false;返回null。